Стрифицированный Json внутри безлимитного Json

0

У меня есть простая, но большая проблема.

Ответ JSON, который я получил, выглядит примерно так:

{
    "responseCode":200,
    "response":"{\"success\":true,\"results\":[{\"_id\":\"57907ca4dc2a4ff43c6d1300\",\"user_email\":\"[email protected]\",\"user_displayName\":\"auauau\",\"user_gender\":2,\"user_registerDate\":\"2016-07-21T07:41:24.748Z\",\"user_timezone\":\"-540\",\"__v\":0,\"updatedOn\":\"2016-07-22T02:20:44.624Z\"\,\"user_images\":{\"avatarSmall\":\"n/a\",\"avatarLarge\":\"n/a\",\"coverSmall\":\"n/a\",\"coverLarge\":\"n/a\"},\"user_birthDate\":{\"status\":false,\"dateAndTime\":\"1994-12-01T07:00:00.000Z\"}}]}",
    "headers":{
    }
}

Как вы можете видеть, JSON, который я получил, несомненно, JSON.

Однако внутри myJson.response не JSON.

Я пытался:

 var inner = myJson.response;
 console.log("inner Json =", inner);                  //====1
 console.log("inner Json =", JSON.stringify(inner));  //====2
 inner = JSON.parse(inner);
 console.log("inner Json =", inner);                  //====3
 console.log("inner Json =", JSON.stringify(inner));  //====4

Ни один из них не применим и не является JSON.

Окружающая среда:

  • Сервер: NodeJS

  • Рамки: Angularjs

  • Интерфейс: Ионный

Я передал файл с помощью $ cordovaTransferFile. Так как это не $ http, поэтому нет смысла использовать $ httpParamSerializer или $ httpProvider.

Как я могу изменить данные внутри myJson.response в пригодный для использования JSON?

Отредактировано: Извините, JSON - это не настоящие данные. Я отредактировал его, прежде чем спрашивать вас, поэтому синтаксическая ошибка создается мной. Я изменился во что-то большее, чем реальные данные и уже проверил синтаксис. Мы используем nodeJS для генерации JSON, поэтому определенно не должно быть никакой синтаксической ошибки в JSON.

Теги:
ionic-framework

2 ответа

2

У вас есть синтаксическая ошибка здесь: "{\"success\":true,\"results\":[{\"_id\":\"123123123\",\"email\":\"abcdgmail.com\",\"name\":\"Sixty\",\"data\":[{\"subname\":\"subname2\",\"subDate\":\"01011990\"}]]

data - массив с одним объектом: {\"subname\":\"subname2\",\"subDate\":\"01011990\"}

то данные находятся внутри другого объекта, который вы не закрываете: {\"_id\":\"123123123\",\"email\":\"abcdgmail.com\",\"name\":\"Sixty\",\"data\":[{\"subname\":\"subname2\",\"subDate\":\"01011990\"}]

У вас есть два] вместе.

EDIT Исправлено:

var json = {
    "responseCode":200,
    "response":"{\"success\":true,\"results\":[{\"_id\":\"123123123\",\"email\":\"abcdgmail.com\",\"name\":\"Sixty\",\"data\":[{\"subname\":\"subname2\",\"subDate\":\"01011990\"}]}]}",
    "headers":{
        }
};
var response = JSON.parse(json.response);
console.log(response);

EDIT2

С новым JSON:

var json = {
    "responseCode":200,
    "response":"{\"success\":true,\"results\":[{\"_id\":\"57907ca4dc2a4ff43c6d1300\",\"user_email\":\"[email protected]\",\"user_displayName\":\"auauau\",\"user_gender\":2,\"user_registerDate\":\"2016-07-21T07:41:24.748Z\",\"user_timezone\":\"-540\",\"__v\":0,\"updatedOn\":\"2016-07-22T02:20:44.624Z\"\,\"user_images\":{\"avatarSmall\":\"n/a\",\"avatarLarge\":\"n/a\",\"coverSmall\":\"n/a\",\"coverLarge\":\"n/a\"},\"user_birthDate\":{\"status\":false,\"dateAndTime\":\"1994-12-01T07:00:00.000Z\"}}]}",
    "headers":{
    }
}
json.response = JSON.parse(json.response);
console.log(json);

С помощью приведенного выше кода вы теперь можете использовать json.response как объект JSON.

  • 0
    Да, один из результатов не закрыт.
  • 1
    Я сожалею о моей синтаксической ошибке. Но вы можете посмотреть на это снова? Большое спасибо за ответ.
1

JSON.parse не работает, потому что в объекте myJson.response есть синтаксическая ошибка.

Проверить следующее

{
"success": true,
"results": [
              {
                    "_id": "123123123",
                    "email": "abcdgmail.com",
                    "name": "Sixty",
                    "data": [
                               {
                                "subname": "subname2",
                                "subDate": "01011990"
                               }
                            ]
               }// this is missing in your object
           ]
}
  • 0
    Я проверил и обнаружил, что это была моя ошибка. Извините, но вы можете посмотреть на это снова? Спасибо за ваш ответ.
  • 0
    Вы имеете в виду, что это все еще не работает? после синтаксической ошибки решить?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню