Home > database >  JSON Parsing Issue Swift - Dictionary
JSON Parsing Issue Swift - Dictionary

Time:01-07

I'm trying to retrieve the data from this dictionary and for some reason I cannot seem to acquire it. I'm new to parsing JSON so apologies if this is rough.

let temp = json["list"].arrayValue.map({$0["main"].dictionaryValue})
print(temp[0])

Here I am setting a value equal to the dictionary from the JSON. However, I know I need to add the key's value that I'm searching for. To be clear, I am searching for the "temp" key which in the example is equal to 28.19999... Here is an example of the JSON:

"list" : [
{
  "dt" : 1641524400,
  "main" : {
    "humidity" : 68,
    "sea_level" : 1014,
    "temp_max" : 29.260000000000002,
    "feels_like" : 28.199999999999999,
    "temp_min" : 28.199999999999999,
    "grnd_level" : 1004,
    "temp" : 28.199999999999999,
    "temp_kf" : -0.58999999999999997,
    "pressure" : 1014
  },{
  "dt" : 1641546000,
  "main" : {
    "pressure" : 1009,
    "feels_like" : 20.93,
    "temp_max" : 27.100000000000001,
    "temp" : 27.100000000000001,
    "humidity" : 83,
    "grnd_level" : 999,
    "sea_level" : 1009,
    "temp_min" : 27.100000000000001,
    "temp_kf" : 0
  },
  "sys" : {
    "pod" : "n"
  },
  "pop" : 0.41999999999999998,
  "wind" : {
    "deg" : 354,
    "speed" : 5.4100000000000001,
    "gust" : 10.58
  },
  "visibility" : 6695,
  "weather" : [
    {
      "main" : "Snow",
      "id" : 600,
      "description" : "light snow",
      "icon" : "13n"
    }
  ],
  "snow" : {
    "3h" : 0.26000000000000001
  },
  "clouds" : {
    "all" : 100
  },
  "dt_txt" : "2022-01-07 09:00:00"
},
{
  "dt" : 1641556800,
  "main" : {
    "temp_min" : 26.82,
    "humidity" : 90,
    "pressure" : 1008,
    "temp_kf" : 0,
    "temp" : 26.82,
    "feels_like" : 18.879999999999999,
    "sea_level" : 1008,
    "temp_max" : 26.82,
    "grnd_level" : 998
  },
  "sys" : {
    "pod" : "n"
  },
  "pop" : 0.97999999999999998,
  "wind" : {
    "deg" : 310,
    "gust" : 14.359999999999999,
    "speed" : 7.5199999999999996
  }]

CodePudding user response:

In your code, temp is an array of dictionaries. So, temp[0] is the first element, which is a dictionary (the one with "humidity", "sea_level", etc).

You need temp[0].dictionaryValue["temp"]

CodePudding user response:

Found my answer:

let temp = json["list"].arrayValue.map({$0["main"]["temp"].stringValue})
  •  Tags:  
  • Related