2017-11-09 1 views
0

私は残りのAPIにGETリクエストを送信した後responseTextとして返された以下のJSONがありますjavascriptで入れ子にされたJSONの要素を解析する方法は?

{ 
    "ehrs": [ 
     { 
      "uid": "11111111-1111-1111-1111-111111111111", 
      "dateCreated": "2017-09-21 04:36:47", 
      "subjectUid": "11111111-1111-1111-1111-111111111111", 
      "systemId": "CABOLABS_EHR_SERVER", 
      "organizationUid": "123456" 
     }, 
     { 
      "uid": "22222222-1111-1111-1111-111111111111", 
      "dateCreated": "2017-09-21 04:36:47", 
      "subjectUid": "22222222-1111-1111-1111-111111111111", 
      "systemId": "CABOLABS_EHR_SERVER", 
      "organizationUid": "123456" 
     }, 
     { 
      "uid": "33333333-1111-1111-1111-111111111111", 
      "dateCreated": "2017-09-21 04:36:48", 
      "subjectUid": "33333333-1111-1111-1111-111111111111", 
      "systemId": "CABOLABS_EHR_SERVER", 
      "organizationUid": "123456" 
     }, 
     { 
      "uid": "44444444-1111-1111-1111-111111111111", 
      "dateCreated": "2017-09-21 04:36:48", 
      "subjectUid": "44444444-1111-1111-1111-111111111111", 
      "systemId": "CABOLABS_EHR_SERVER", 
      "organizationUid": "123456" 
     }, 
     { 
      "uid": "55555555-1111-1111-1111-111111111111", 
      "dateCreated": "2017-09-21 04:36:48", 
      "subjectUid": "55555555-1111-1111-1111-111111111111", 
      "systemId": "CABOLABS_EHR_SERVER", 
      "organizationUid": "123456" 
     }, 
     { 
      "uid": "97fecfa9-d51c-440f-93eb-cb8bbabc5cdc", 
      "dateCreated": "2017-09-27 22:53:55", 
      "subjectUid": "ef70c3bf-8aba-4f4b-83b7-097f2aff60f6", 
      "systemId": "CABOLABS_EHR_SERVER", 
      "organizationUid": "123456" 
     }, 
     { 
      "uid": "4e363a7c-0b25-405c-93d8-1361f4775ccd", 
      "dateCreated": "2017-10-10 06:08:58", 
      "subjectUid": "228084fb-10d8-4441-8683-aad526e2c5fd", 
      "systemId": "CABOLABS_EHR_SERVER", 
      "organizationUid": "123456" 
     }, 
     { 
      "uid": "3c6b8a98-1488-427b-8251-5bebad35afda", 
      "dateCreated": "2017-10-10 21:03:44", 
      "subjectUid": "3dd3a7b1-b642-4e9b-b12a-4fcd10af6e4f", 
      "systemId": "CABOLABS_EHR_SERVER", 
      "organizationUid": "123456" 
     } 
    ], 
    "pagination": { 
     "max": 10, 
     "offset": 0, 
     "nextOffset": 10, 
     "prevOffset": 0 
    }, 
    "timing": "0 ms" 
} 

を私はすべての「EHRの」要素からのみ「UID」と「dateCreated」の要素を取得したいですこのjsonの属性名とその値が表示された適切な方法でそれらを表示します。私は次のコードを試しました:

var ehrjson = (this.responseText); 
var ehrobj = JSON.parse(ehrjson); 
document.getElementById("ehrlist").innerHTML = ehrobj.ehrs.uid+" ----  "+ehrobj.ehrs.dateCreated+"\n"; 

しかし、それは出力として[未定義] ---- [未定義]をHTMLで表示しています。 私のコードは間違っているが、何をすべきか把握できないと感じています。どのようにこの問題にアプローチするのですか?あなたが唯一の配列の個々の要素のプロパティuiddateCreatedにアクセスすることができ、アレイ

あるehrsプロパティを持つオブジェクトを取得

+2

「ehrobj.ehrs」は配列です。 – Ryan

答えて

1

ehrobj = JSON.parse(ehrjson)後。

だから、どちらか(1)単一の要素のプロパティを表示することができuiddateCreated

ehrobj.ehrs[0].uid+" "+ehrobj.ehrs[0].dateCreated 

または(2)すべての連結

ehrobj.ehrs.map(e => e.uid + " " + e.dateCreated).join("\n") 
+0

ありがとう、今私は完全に理解しています!また、uidのような値で属性名を印刷する方法を教えてください:1111-1111とdateCreated:12/7/16 – dreadedHarvester

+0

単に文字列 'ehrobj.ehrs .map(e => "uid:" + e.uid + "date:" + e.dateCreated).join( "\ n") ' –

1

あなたのJSONの解析は問題ではありませんそれらを得ることができますここに。あなたはこのスニペットに配列されehrobj.ehrs

// ehrobj as js-object to get this snippet running 
 
var ehrobj = { 
 
\t \t "ehrs": [ 
 
\t \t \t { 
 
\t \t \t \t "uid": "11111111-1111-1111-1111-111111111111", 
 
\t \t \t \t "dateCreated": "2017-09-21 04:36:47", 
 
\t \t \t \t "subjectUid": "11111111-1111-1111-1111-111111111111", 
 
\t \t \t \t "systemId": "CABOLABS_EHR_SERVER", 
 
\t \t \t \t "organizationUid": "123456" 
 
\t \t \t }, 
 
\t \t \t { 
 
\t \t \t \t "uid": "22222222-1111-1111-1111-111111111111", 
 
\t \t \t \t "dateCreated": "2017-09-21 04:36:47", 
 
\t \t \t \t "subjectUid": "22222222-1111-1111-1111-111111111111", 
 
\t \t \t \t "systemId": "CABOLABS_EHR_SERVER", 
 
\t \t \t \t "organizationUid": "123456" 
 
\t \t \t }, 
 
\t \t \t { 
 
\t \t \t \t "uid": "33333333-1111-1111-1111-111111111111", 
 
\t \t \t \t "dateCreated": "2017-09-21 04:36:48", 
 
\t \t \t \t "subjectUid": "33333333-1111-1111-1111-111111111111", 
 
\t \t \t \t "systemId": "CABOLABS_EHR_SERVER", 
 
\t \t \t \t "organizationUid": "123456" 
 
\t \t \t }, 
 
\t \t \t { 
 
\t \t \t \t "uid": "44444444-1111-1111-1111-111111111111", 
 
\t \t \t \t "dateCreated": "2017-09-21 04:36:48", 
 
\t \t \t \t "subjectUid": "44444444-1111-1111-1111-111111111111", 
 
\t \t \t \t "systemId": "CABOLABS_EHR_SERVER", 
 
\t \t \t \t "organizationUid": "123456" 
 
\t \t \t }, 
 
\t \t \t { 
 
\t \t \t \t "uid": "55555555-1111-1111-1111-111111111111", 
 
\t \t \t \t "dateCreated": "2017-09-21 04:36:48", 
 
\t \t \t \t "subjectUid": "55555555-1111-1111-1111-111111111111", 
 
\t \t \t \t "systemId": "CABOLABS_EHR_SERVER", 
 
\t \t \t \t "organizationUid": "123456" 
 
\t \t \t }, 
 
\t \t \t { 
 
\t \t \t \t "uid": "97fecfa9-d51c-440f-93eb-cb8bbabc5cdc", 
 
\t \t \t \t "dateCreated": "2017-09-27 22:53:55", 
 
\t \t \t \t "subjectUid": "ef70c3bf-8aba-4f4b-83b7-097f2aff60f6", 
 
\t \t \t \t "systemId": "CABOLABS_EHR_SERVER", 
 
\t \t \t \t "organizationUid": "123456" 
 
\t \t \t }, 
 
\t \t \t { 
 
\t \t \t \t "uid": "4e363a7c-0b25-405c-93d8-1361f4775ccd", 
 
\t \t \t \t "dateCreated": "2017-10-10 06:08:58", 
 
\t \t \t \t "subjectUid": "228084fb-10d8-4441-8683-aad526e2c5fd", 
 
\t \t \t \t "systemId": "CABOLABS_EHR_SERVER", 
 
\t \t \t \t "organizationUid": "123456" 
 
\t \t \t }, 
 
\t \t \t { 
 
\t \t \t \t "uid": "3c6b8a98-1488-427b-8251-5bebad35afda", 
 
\t \t \t \t "dateCreated": "2017-10-10 21:03:44", 
 
\t \t \t \t "subjectUid": "3dd3a7b1-b642-4e9b-b12a-4fcd10af6e4f", 
 
\t \t \t \t "systemId": "CABOLABS_EHR_SERVER", 
 
\t \t \t \t "organizationUid": "123456" 
 
\t \t \t } 
 
\t \t ], 
 
\t \t "pagination": { 
 
\t \t \t "max": 10, 
 
\t \t \t "offset": 0, 
 
\t \t \t "nextOffset": 10, 
 
\t \t \t "prevOffset": 0 
 
\t \t }, 
 
\t \t "timing": "0 ms" 
 
\t }; 
 

 

 
\t ehrobj.ehrs.forEach(function (ehr) { 
 
\t \t document.getElementById("ehrlist").innerHTML += ehr.uid + " ----  " + ehr.dateCreated + "\n"; 
 
\t });
<pre id="ehrlist"></pre>

0

注意をehrobj.ehrsなどサイクルそれらの各配列要素にアクセスする必要があり、そうehrobj.ehrs.uidはプロパティではありません彼の。

ehrobj.ehrs === [ 
    { 
     "uid": "11111111-1111-1111-1111-111111111111", 
     "dateCreated": "2017-09-21 04:36:47", 
     "subjectUid": "11111111-1111-1111-1111-111111111111", 
     "systemId": "CABOLABS_EHR_SERVER", 
     "organizationUid": "123456" 
    }, ... ] 

あなたはehrs配列を繰り返す必要があります。

let ehrlist = document.getElementById('ehrlist'); 
ehrobj.ehrs.forEach(function(ehr){ 
    let newEl = document.createElement('div'); 
    newEl.innerHTML = ehr.uid + ' ------ ' + ehr.dateCreated; 
    ehrlist.appendChild(newEl); 
}) 
関連する問題