2017-01-12 23 views
0

Javaスクリプトを使用して、下記のJSONから値を抽出するにはどうすればよいですか?javascriptでカスタムjson文字列から値を抽出する方法は?

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を受け入れないことに注意してください。代わりにエラーが発生します。これを回避するには、ボックス記法を使用します。 origin

ボックスの表記が文字列になりますので、あなたがAccess-Control-Allow-Headers周りの引用符を持っている必要がありますを取得します

json.headers["Access-Control-Allow-Headers"]

json.headers[Access-Control-Allow-Headers]も構文エラーをスローします。

編集:マイクCが正しく指摘しているように、 '。'表記は ' - '記号を受け入れません。

+0

これは正しい方法であり、おそらくそれを使用する方法ですが、データにアクセスする別の方法があります。 'json ['headers'] ['Access-control-allow-headers']'これはあなたに原点のための同じ出力を得るでしょう。 – Matthew

+0

'json.headers.Access-control-allow-headers'は識別子に' -'をつけることができないので構文エラーになります。代わりに、 'json.headers ['アクセス制御許可ヘッダー]'' –

+0

@MikeCを実行する必要があります。あなたは大丈夫です。私は決して変数名に ' - 'を使用しません。私はこの問題を抱えていません。 – EvSunWoodard

0

このようにお試しいただけます。まず、json stringに変換して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>

関連する問題