Мой анализ JSON не работает - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть JSON, предоставляемый API.Код следующий:

DispatchQueue.main.async {
    let responseJSON = try? JSONSerialization.jsonObject(with: data, options:.allowFragments) as! [String:Any]
    let values = responseJSON!["feeds"] as? [[String: Any]] ?? []
    print("JSON")
    print(responseJSON)
    print("Feeds")
    print (values)
    for value in values {
        if let temp=value["field1"] as? Float {
            self.temperatures.append(temp)
            print(temp)
        }
    }
}

Но результат для значений выглядит так:

[["field1": 12.5004340278, "entry_id": 1, "created_at": 2018-03-10T16:02:41Z], 
["field1": 12.5004340278, "entry_id": 2, "created_at": 2018-03-10T16:03:41Z], 
["field1": 12.5004340278, "entry_id": 3, "created_at": 2018-03-10T16:03:56Z], 
["field1": 11.6866319444, "entry_id": 4, "created_at": 2018-03-10T16:06:07Z], 
["field1": 12.2291666667, "entry_id": 5, "created_at": 2018-03-10T16:06:23Z]]

После этого он не печатает мой темп.Есть идеи почему?Спасибо!


К вашему сведению, JSON выглядит так:

{
    "feeds": [{
        "created_at": "2018-03-10T16:02:41Z",
        "entry_id": 1,
        "field1": "12.5004340278"
    }, {
        "created_at": "2018-03-10T16:03:41Z",
        "entry_id": 2,
        "field1": "12.5004340278"
    }, {
        "created_at": "2018-03-10T16:03:56Z",
        "entry_id": 3,
        "field1": "12.5004340278"
    }, {
        "created_at": "2018-03-10T16:06:07Z",
        "entry_id": 4,
        "field1": "11.6866319444"
    }, {
        "created_at": "2018-03-10T16:06:23Z",
        "entry_id": 5,
        "field1": "12.2291666667"
    }]
}

1 Ответ

0 голосов
/ 25 апреля 2018

Температура - это строка в вашем JSON, поэтому вам нужно преобразовать строку в Double:

if let temp=value["field1"] as? String, let temperature = Double(temp) {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...