2017-04-14 25 views
1

のJSON配列は、私はこのようなJSONを持っている:解析JSONは - 配列

{ 
 
    "cod":"200", 
 
    "message":0.0085, 
 
    "cnt":37, 
 
    "list":[ 
 
     { 
 
     "dt":1492074000, 
 
     "main":{ 
 
      "temp":8.74, 
 
      "temp_min":8.39, 
 
      "temp_max":8.74, 
 
      "pressure":1002.4, 
 
      "sea_level":1023.01, 
 
      "grnd_level":1002.4, 
 
      "humidity":94, 
 
      "temp_kf":0.35 
 
     }, 
 
     "weather":[ 
 
      { 
 
       "id":500, 
 
       "main":"Rain", 
 
       "description":"Lekki deszcz", 
 
       "icon":"10d" 
 
      } 
 
     ], 
 
     "clouds":{ 
 
      "all":32 
 
     }, 
 
(...)
そして私は、文字列 "説明" にアクセスするために問題を抱えている: "Lekki deszcz"。私はこのようなコードを使用する場合:

JSON.parse(json.list[0]['weather'][0].description); 
//OR 
JSON.parse(json.list[0]['weather'][0]['description']); 

を私は何を取得します。しかし、もし私がこの配列 "id":500にintにアクセスしたいなら、すべては大丈夫です。

JSON.parse(json.list[0]['weather'][0].id); 

この具体的な例では、文字列の解析に問題があるようです。

答えて

0

そのプロパティの値にアクセスしようとしている場合は、JSON.parseが必要です。プロパティ値にJSON.parseを呼び出すのは意味がありません。その値が JSONデータの文字列解釈でない限り、...で始まるようにしてください。

シンプル:json.list[0].weather[0].descriptionは、必要な文字列値を返す必要があります。

0

あなたはJSON.parseとの最初の文字列を解析して、プロパティを使用してデータにアクセスする必要があります。

var json = '{ "cod": "200", "message": 0.0085, "cnt": 37, "list": [{ "dt": 1492074000, "main": { "temp": 8.74, "temp_min": 8.39, "temp_max": 8.74, "pressure": 1002.4, "sea_level": 1023.01, "grnd_level": 1002.4, "humidity": 94, "temp_kf": 0.35 }, "weather": [{ "id": 500, "main": "Rain", "description": "Lekki deszcz", "icon": "10d" }], "clouds": { "all": 32 } }] }', 
 
    object = JSON.parse(json); 
 

 
console.log(object.list[0]['weather'][0].description);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

あなたが解析されたオブジェクトの内部へのアクセスを開始する前に、解析関数(JSON.parse(json))への呼び出しを閉じます。そうしないと、あなたは、JSON文字列ではなく、JSON データ構造'list'などのプロパティにアクセスしようとしています。あなたは数にそれを使用することができますので、

var json = `{ 
 
    "cod": "200", 
 
    "message": 0.0085, 
 
    "cnt": 37, 
 
    "list": [{ 
 
    "dt": 1492074000, 
 
    "main": { 
 
     "temp": 8.74, 
 
     "temp_min": 8.39, 
 
     "temp_max": 8.74, 
 
     "pressure": 1002.4, 
 
     "sea_level": 1023.01, 
 
     "grnd_level": 1002.4, 
 
     "humidity": 94, 
 
     "temp_kf": 0.35 
 
    }, 
 
    "weather": [{ 
 
     "id": 500, 
 
     "main": "Rain", 
 
     "description": "Lekki deszcz", 
 
     "icon": "10d" 
 
    }], 
 
    "clouds": { 
 
     "all": 32 
 
    } 
 
    }] 
 
}` 
 

 
console.log(
 
    JSON.parse(json).list[0]['weather'][0].description 
 
)

2

JSON.parseはJSON.parse(500)のエラーを投げていません。あなたはすでにjsonオブジェクトを持っています(そうでなければ、JSON.parse(json.list[0]['weather'][0].id);という行も失敗します)。

JSON.parse(500)の出力は500です:あなたはJSON.parse非JSONにしようとすると、しかし、あなたがエラーを取得し

console.log(JSON.parse(500))

console.log(JSON.parse("foo"))

それだけで、十分に、JSONを解析するためにあるよう

言われていること、あなたは、まったくJSON.parseを必要としません。あなたが望む結果を得るために、ちょうど

console.log(json.list[0].weather[0].description); 
を使用