2017-01-12 3 views
0

Как извлечь значения из приведенного ниже JSON с помощью java-скрипта?Как извлечь значения из пользовательской строки json в javascript?

var json = { 
    "headers": { 
    "Access-Control-Allow-Headers": "origin", 
    "Access-Control-Allow-Methods": "GET", 
    "Access-Control-Allow-Origin": "*", 
    "Access-Control-Max-Age": "3628800", 
    "Connection": "keep-alive", 
    "Content-Length": "981", 
    "Content-Type": "application/json", 
    "Date": "Thu, 12 Jan 2017 15:52:27 GMT", 
    "Server": "Apigee LB" 
    }, 
    "content": "{\n \"apiProducts\" : [ ],\n \"appFamily\" : \"default\",\n \"appId\" : \"a937ece1-a0be-4475-bfea-e11fdeb279c6\",\n \"attributes\" : [ {\n \"name\" : \"DisplayName\",\n \"value\" : \"CustomerApp\"\n }, {\n \"name\" : \"Notes\",\n \"value\" : \"\"\n }, {\n \"name\" : \"fusion.expiry.date\",\n \"value\" : \"2/10/2017\"\n } ],\n \"callbackUrl\" : \"\",\n \"createdAt\" : 1484029734897,\n \"createdBy\" : \"[email protected]\",\n \"credentials\" : [ {\n \"apiProducts\" : [ {\n  \"apiproduct\" : \"Customer and Product\",\n  \"status\" : \"revoked\"\n } ],\n \"attributes\" : [ ],\n \"consumerKey\" : \"wNy0oKRhisvtMpjCR3dp67vZAC5lV3NV\",\n \"consumerSecret\" : \"mTiGGgHoAAGrqWmh\",\n \"expiresAt\" : 1486621737213,\n \"issuedAt\" : 1484029737213,\n \"scopes\" : [ ],\n \"status\" : \"approved\"\n } ],\n \"developerId\" : \"793e585c-f093-41d6-88e9-e235bfd087ed\",\n \"lastModifiedAt\" : 1484049963233,\n \"lastModifiedBy\" : \"[email protected]\",\n \"name\" : \"CustomerApp\",\n \"scopes\" : [ ],\n \"status\" : \"approved\"\n}", 
    "status": { 
    "message": "OK", 
    "code": "200" 
    } 
} 

Пожалуйста, помогите.

+0

Использование точечной нотации. 'json.headers [0] .Connection;' –

+2

Похоже, вы не работаете с JSON. У вас есть реальный объект JS (JSON - это просто текстовый формат, который необходимо проанализировать, чтобы быть полезным). Что именно вы пытаетесь достичь? –

ответ

2

Json предназначен для Javascript. Все, что вам нужно сделать, это json.headers.Connection, который должен получить keep-alive.

Промыть и повторить. В противном случае получите библиотеку разбора.

Исключение составляют нерегулярные символы в именах переменных. Обратите внимание, что точечная нотация не принимает Access-Control-Allow-Headers, вместо этого она выдает ошибку. Чтобы обойти это, используйте полевую нотацию.

json.headers["Access-Control-Allow-Headers"] который будет получать origin

Коробка обозначения принимает в строках, так что вы должны иметь цитату вокруг Access-Control-Allow-Headers.

json.headers[Access-Control-Allow-Headers] также выдаст синтаксическую ошибку.

Редактировать: Поскольку Майк С справедливо указывает, '.' нотация не примет символ «-».

+0

Это правильный способ и, вероятно, способ его использования, однако есть еще один способ доступа к данным. 'json ['headers'] ['Access-control-allow-headers']', который даст вам тот же результат для origin. – Matthew

+0

'json.headers.Access-control-allow-headers' приведет к синтаксической ошибке, поскольку вы не можете иметь' -' в идентификаторах. Вместо этого вам нужно будет сделать 'json.headers ['Access-control-allow-headers]' ' –

+0

@MikeC - Вы совершенно правы. Я никогда не использую '-' в моих именах переменных. У меня никогда не было этой проблемы. – EvSunWoodard

0

Вы можете попробовать вот так. Сначала нужно преобразовать его в строку json, а затем преобразовать в объект json, чтобы вы могли получить значение с помощью требуемого ключа.

<!DOCTYPE html> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head> 
 
    <title> 
 

 
    </title> 
 
    <script src="http://code.jquery.com/jquery-1.8.3.js"></script> 
 
</head> 
 
<body> 
 
    <script> 
 
\t var json={  
 
\t \t "headers": { 
 
\t \t \t "Access-Control-Allow-Headers": "origin", 
 
\t \t \t "Access-Control-Allow-Methods": "GET", 
 
\t \t \t "Access-Control-Allow-Origin": "*", 
 
\t \t \t "Access-Control-Max-Age": "3628800", 
 
\t \t \t "Connection": "keep-alive", 
 
\t \t \t "Content-Length": "981", 
 
\t \t \t "Content-Type": "application/json", 
 
\t \t \t "Date": "Thu, 12 Jan 2017 15:52:27 GMT", 
 
\t \t \t "Server": "Apigee LB" 
 
\t \t }, 
 
\t \t "content": "{\n \"apiProducts\" : [ ],\n \"appFamily\" : \"default\",\n \"appId\" : \"a937ece1-a0be-4475-bfea-e11fdeb279c6\",\n \"attributes\" : [ {\n \"name\" : \"DisplayName\",\n \"value\" : \"CustomerApp\"\n }, {\n \"name\" : \"Notes\",\n \"value\" : \"\"\n }, {\n \"name\" : \"fusion.expiry.date\",\n \"value\" : \"2/10/2017\"\n } ],\n \"callbackUrl\" : \"\",\n \"createdAt\" : 1484029734897,\n \"createdBy\" : \"[email protected]\",\n \"credentials\" : [ {\n \"apiProducts\" : [ {\n  \"apiproduct\" : \"Customer and Product\",\n  \"status\" : \"revoked\"\n } ],\n \"attributes\" : [ ],\n \"consumerKey\" : \"wNy0oKRhisvtMpjCR3dp67vZAC5lV3NV\",\n \"consumerSecret\" : \"mTiGGgHoAAGrqWmh\",\n \"expiresAt\" : 1486621737213,\n \"issuedAt\" : 1484029737213,\n \"scopes\" : [ ],\n \"status\" : \"approved\"\n } ],\n \"developerId\" : \"793e585c-f093-41d6-88e9-e235bfd087ed\",\n \"lastModifiedAt\" : 1484049963233,\n \"lastModifiedBy\" : \"[email protected]\",\n \"name\" : \"CustomerApp\",\n \"scopes\" : [ ],\n \"status\" : \"approved\"\n}", 
 
\t \t "status": { 
 
\t \t \t "message": "OK", 
 
\t \t \t "code": "200" 
 
\t \t } 
 
\t \t }; 
 
\t \t 
 
\t \t 
 
\t \t 
 
\t \t var str = JSON.stringify(json); 
 
\t \t var obj = JSON.parse(str); 
 
\t \t console.log(obj.headers["Access-Control-Allow-Headers"]); 
 
\t \t console.log(obj.headers["Access-Control-Allow-Methods"]); 
 
\t \t 
 
    </script> 
 
</body> 
 
</html>

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