2017-01-10 15 views
0

Это заставляет меня сходить с ума, и я надеюсь, что кто-то столкнулся с этим &, придумайте чистое, элегантное решение. При создании запроса JSON в LinkedIn REST Api тело возвращается в виде строки с символами новой строки. Когда я разбираю строку в JSON с помощью JSON.parse, то появляется, чтобы создать объект JSON, но я не могу получить доступ к значениям с точечной нотацией, используя их относительные ключи. Я попытался ускользнуть от новых символов линии, комбинации JSON.stringify, затем разбора и т. Д. Я не могу заставить это работать, и это неприятно, хотя я уверен, что есть простое решение, которое я пропускаю. Вот ответ от LinkedIn API:Тело ответа API ответа на парсинг LinkedIn для JSON

{ "StatusCode": 200, "тело": "{\ п \" numConnections \ ": 152, \ п \" numConnectionsCapped \ ": ложь \ п }», "заголовки": { "сервер": "Апач-Койот/1.1", "х-ли-запрос-ID": "MyID", "изменяются": "*", "х-ли-формат": «json», «content-type»: «application/json; charset = UTF-8», «date»: «Tue, 10 Jan 2017 00:08:01 GMT», «x-li-fabric»: "Prod-ltx1", "Transfer-Encoding": "фрагментированный", "х-Li-поп": "Prod-ltx1", "печенье установленной": [ "КСС = \" Ь = TB70: г = 489: u = 129: i = 1484006881: t = 1484082637: s = AQG3LuLPqWuZiIoHGf2NqD8O7mRfdA4q \ "; Expires = Tue, 10 Jan 2017 21:10:37 GMT; domain = .linkedin.com; Путь = /"], "x- Li-UUID ":" 53NCd2VAmBSAAWKrrSoAAA == "}," запрос ": {" URI ": {" протокол ":" https: " "косая черта": правда, "Auth": нулевой, "хозяин": "api.linkedin.com", "порт": 443, "имя хост":" api.linkedin .com " "хэш": нулевой, "поиск": "формат = JSON", "запрос?": "формат = JSON", "путь":"/v1/человек/идентификатор = MyId: (число-соединение, num-connections-capped) "," path ":"/v1/people/id = myid: (num-connections, num-connections-capped)? format = json "," href ":" https://api.linkedin.com/v1/people/id=myid:(num-connections,num-connections-capped)?format=json "}," method ":" GET», "заголовки": { "разрешение": "Знаменосец mytoken"}}}

Я пытаюсь получить доступ к значению с ключевыми "numConnections", но просто не могут добраться до стоимость.

Использование JSON.parse(response.body) получает меня этот результат:

{ "numConnections": 152, "numConnectionsCapped" ложь}

однако я до сих пор не может получить доступ к значениям, связанные с каждым ключом, используя

myObj.numConnections или любые другие обозначения, которые я пробовал. Как я могу получить действительный объект JSON из этого в NodeJS?

ответ

1

Результат разбора response.body является объект - на котором вы можете использовать точечную нотацию или брекет обозначения для доступа к значениям:

var parsedBody = JSON.parse(response.body); 
parsedBody.numConnections //152 
parsedBody['numConnections'] //152 
+1

Чтобы продолжить это, вы можете легко проверить использование консоли Chrome - я смог использовать 'let y = JSON.parse (response.body)' без проблем. –

0

Попробуйте

JSON.parse(JSON.stringify(response.body)) 
+0

'response.body' уже вставлен – hackerrdave

0

Ну, это было глупо. Я обнаружил, что моя проблема была действительно с Express, не позволяющей отправлять числовые значения с помощью res.send (num). По какой-то причине в консоли не было ошибок в результате, и я получил неопределенное значение с запросом get. Разбор JSON не был проблемой, но отмеченный ответ был действительным. Если кто-то еще сталкивается с этой проблемой, вам нужно вывести числовые значения при их отделении от объекта, если вы хотите отправить их в ответ в Express!

Смежные вопросы