javascript
  • json
  • 2015-05-06 201 views 0 likes 
    0

    如何獲得'成本'內的'價值'?請幫助我,我剛剛從w3schools學到了JSON。我試過了,但沒有奏效。我的代碼獲得'價值'是在代碼的底部。獲取嵌套JSON

    <p id="demo"></p> 
    
    <script> 
    var text='{ "rajaongkir":{ 
        "query":{ 
        "origin":"501", 
        "destination":"114", 
        "weight":1700, 
        "courier":"jne" 
        }, 
        "status":{ 
        "code":200, 
        "description":"OK" 
        }, 
        "origin_details":{ 
        "city_id":"501", 
        "province_id":"5", 
        "province":"DI Yogyakarta", 
        "type":"Kota", 
        "city_name":"Yogyakarta", 
        "postal_code":"55000" 
        }, 
        "destination_details":{ 
        "city_id":"114", 
        "province_id":"1", 
        "province":"Bali", 
        "type":"Kota", 
        "city_name":"Denpasar", 
        "postal_code":"80000" 
        }, 
        "results":[ 
        { 
         "code":"jne", 
         "name":"Jalur Nugraha Ekakurir (JNE)", 
         "costs":[ 
          { 
           "service":"OKE", 
           "description":"Ongkos Kirim Ekonomis", 
           "cost":[ 
           { 
            "value":38000, //<<<<<< GET THIS VALUE 
            "etd":"4-5", 
            "note":"" 
           } 
           ] 
          }, 
          { 
           "service":"REG", 
           "description":"Layanan Reguler", 
           "cost":[ 
           { 
            "value":44000, 
            "etd":"2-3", 
            "note":"" 
           } 
           ] 
          }, 
          { 
           "service":"SPS", 
           "description":"Super Speed", 
           "cost":[ 
           { 
            "value":349000, 
            "etd":"", 
            "note":"" 
           } 
           ] 
          }, 
          { 
           "service":"YES", 
           "description":"Yakin Esok Sampai", 
           "cost":[ 
           { 
            "value":98000, 
            "etd":"1-1", 
            "note":"" 
           } 
           ] 
          } 
         ] 
        } 
        ]}}'; 
        obj=JSON.parse(text); 
        document.getElementById("demo").innerHTML= 
        obj.rajaongkir.results[0].costs[0].cost[0].value; 
        </script> 
    
    +2

    我愛你'審查** w3sch ls' –

    +0

    但我認爲它已經成爲未經審查-_- –

    +0

    學會調試,記錄每一步安慰'然後obj'' obj.rajaongkir'。 chrome或firefox中的'console.log'將非常方便。 –

    回答

    2

    您的JSON不是一個有效的字符串文字。沒有換行符允許,除非您以\結束每一行。

    如果添加這些\,一切都很好:

    https://jsfiddle.net/ec3n6f20/

    +0

    我覺得愚蠢哈哈..感謝您的幫助..對不起,我只是瞭解JSON –

    1

    首先解析text字符串到Json結構

    然後這一切都高達each功能和getter組合:

    var input= JSON.parse(text); 
    
    input.results.forEach (function(result){ 
        result.costs.forEach (function(costEntity){ 
        console.log(costEntity.cost.value); 
        }); 
    }); 
    

    但運行代碼通過瀏覽器控制檯 - 之後,在沒有編譯,即使作爲一個字符串,所以首先修復:)

    +0

    'text'甚至沒有有效的字符串文字 – Adrian

    +0

    是的,我已經在Chrome ,點爲你:) – Beri

    4

    你輸入的字符串是錯誤的

    <p id="demo"></p> 
    
    <script> 
    var text='{ "rajaongkir":{ ' 
    + ' "query":{' 
    +'  "origin":"501",' 
    +'  "destination":"114",' 
    +'  "weight":1700,' 
    +'  "courier":"jne"' 
    +' },' 
    +' "status":{' 
    +'  "code":200,' 
    +'  "description":"OK"' 
    +' },' 
    +' "origin_details":{' 
    +'  "city_id":"501",' 
    +'  "province_id":"5",' 
    +'  "province":"DI Yogyakarta",' 
    +'  "type":"Kota",' 
    +'  "city_name":"Yogyakarta",' 
    +'  "postal_code":"55000"' 
    +' },' 
    +' "destination_details":{' 
    +'  "city_id":"114",' 
    +'  "province_id":"1",' 
    +'  "province":"Bali",' 
    +'  "type":"Kota",' 
    +'  "city_name":"Denpasar",' 
    +'  "postal_code":"80000"' 
    +' },' 
    +' "results":[' 
    +'  {' 
    +'  "code":"jne",' 
    +'  "name":"Jalur Nugraha Ekakurir (JNE)",' 
    +'  "costs":[' 
    +'   {' 
    +'    "service":"OKE",' 
    +'    "description":"Ongkos Kirim Ekonomis",' 
    +'    "cost":[' 
    +'     {' 
    +'     "value":38000,' //<<<<<< GET THIS VALUE 
    +'     "etd":"4-5",' 
    +'     "note":""' 
    +'     }' 
    +'    ]' 
    +'   },' 
    +'   {' 
    +'    "service":"REG",' 
    +'    "description":"Layanan Reguler",' 
    +'    "cost":[' 
    +'     {' 
    +'     "value":44000,' 
    +'     "etd":"2-3",' 
    +'     "note":""' 
    +'     }' 
    +'    ]' 
    +'   },' 
    +'   {' 
    +'    "service":"SPS",' 
    +'    "description":"Super Speed",' 
    +'    "cost":[' 
    +'     {' 
    +'     "value":349000,' 
    +'     "etd":"",' 
    +'     "note":""' 
    +'     }' 
    +'    ]' 
    +'   },' 
    +'   {' 
    +'    "service":"YES",' 
    +'    "description":"Yakin Esok Sampai",' 
    +'    "cost":[' 
    +'     {' 
    +'     "value":98000,' 
    +'     "etd":"1-1",' 
    +'     "note":""' 
    +'     }' 
    +'    ]' 
    +'   }' 
    +'  ]' 
    +'  }' 
    +' ]}}'; 
        obj=JSON.parse(text); 
        document.getElementById("demo").innerHTML= 
        obj.rajaongkir.results[0].costs[0].cost[0].value; 
        </script> 
    
    +0

    這是如何幫助?你甚至不會說這個字符串有什麼問題。 – Adrian

    +0

    非常感謝。 –

    1

    你的代碼是正確的,但在Javascript我們不能宣佈一個字符串幾行。

    你有兩個解決辦法:

    1. 使字符串中只有一行

      var text = '{...}'; 
      
    2. 在每行

      var text='{ "rajaongkir":{ \ 
          "query":{ \ 
          ... 
          "origin":"501", \ 
      }}}'; 
      
    3. 包裝每個末尾添加一個\'的行中添加一個+之初

      var text='{ "rajaongkir":{ ' 
      + ' "query":{' 
      ... 
      + ']}}'; 
      
    +0

    謝謝你的幫助... –

    相關問題