Анализ JSON, возвращенного вызовом API Django REST Framework

#javascript #json #django

#javascript #json #джанго

Вопрос:

В моем приложении Javascript я выполняю вызов API для моего сервера Django /rest-auth/registration code . Если попытка регистрации завершается неудачей, вызов API возвращает следующий JOSN, с разбором которого у меня возникают проблемы:

 {
    "_body":"{"email":["Enter a valid email address."],"username":["A user with that username already exists."]}",
    "status":400,
    "ok":false,
    "statusText":"Bad Request",
    "headers":{
        "Server":[
            "Apache/2.4.23 (Amazon) mod_wsgi/3.5 Python/3.4.3"
        ],
        "Transfer-Encoding":[
            "Identity"
        ],
        "Content-Type":[
            "application/json"
        ],
        "Date":[
            "Thu",
            " 20 Oct 2016 13:10:04 GMT"
        ],
        "Connection":[
            "close"
        ],
        "X-Frame-Options":[
            "SAMEORIGIN"
        ],
        "Access-Control-Allow-Origin":[
            "*"
        ],
        "Allow":[
            "POST",
            " OPTIONS"
        ]
    },
    "type":2,
    "url":"http://www.worldimagearchive.com/rest-auth/registration/"
}
  

Я вижу, как извлечь значения ‘status’ и ‘ok’ (используя err.status amp; err.ok ), но не могу понять, как проанализировать раздел «_body», который может содержать или не содержать ошибки для электронной почты, имени пользователя и т.д.

Что мне нужно сделать, чтобы получить значение "email" раздела (и проверить, существует ли этот раздел, кстати)?

Комментарии:

1. Простое _body.email не работает?

2. JSON.parse(data["_body"])["email"]

3. JSON.parse(data[«_body»])[«электронная почта»] сделал это за меня. Спасибо Мамду

4. Я получаю исключение при попытке сделать это в браузере.

5. Я использую data._body, а не data[«_body»], и это работает для меня.

Ответ №1:

Ну, это JSON внутри JSON. Я пробовал множество вещей, и ничего не получалось, поэтому вот нетрадиционный метод получения электронной почты.

 err=err.replace('"{','{').replace('}"','}'). replace(/\/gi, '')
JSON.parse(input)._body.email;//"Enter a valid email address."