gpt4 book ai didi

json - 如何使用 SWIFT 3 提取嵌套 JSON 中的第一个重复元素

转载 作者:行者123 更新时间:2023-11-30 12:16:17 26 4
gpt4 key购买 nike

我正在尝试从以下 JSON 中提取第一个 "Field1""Field2" 值:

{
"channel": {
"id": 297681,
"name": "Basement",
"description": "Climate Node Upstairs",
"latitude": "0.0",
"longitude": "0.0",
"field1": "Temperature",
"field2": "Humidity",
"created_at": "2017-07-04T21:43:23Z",
"updated_at": "2017-07-30T16:52:48Z",
"last_entry_id": 17803
},
"feeds": [
{
"created_at": "2017-07-30T16:50:46Z",
"entry_id": 17802,
"field1": "68.18",
"field2": "53.80"
},
{
"created_at": "2017-07-30T16:52:48Z",
"entry_id": 17803,
"field1": "68.18",
"field2": "53.90"
}
]
}

我有以下工作代码,可以打印两个提要的文本:

  let url = URL(string: "https://api.thingspeak.com/channels/297681/feeds.json?api_key=xxxx&results=2")!

let task = URLSession.shared.dataTask(with: url)
{
(data, response, error)
in
if let data = data, let rawJSON = try? JSONSerialization.jsonObject(with: data, options:.allowFragments) as? [String: Any]
{
print ("rawjason set")

if let json = rawJSON as? [String: Any]
{
//print(json) //should print json
// print("<-------->`")
// print(json["channel"])
let channel = json["channel"] as! [String: Any]
// print(channel["name"]!)

//let locname = channel["name"]! as! [String: String]
let locname = channel["name"]!
print("<-- name next -->")
print(locname)


let feeds = json["feeds"]
print("<feeds>")
print(feeds)

但是,当我尝试提取第一个提要条目时,我所做的尝试不起作用。

我已经尝试过:

//fails with Type Any> has no subscript members:
let feed1 = feeds[0]

抱歉,如果之前已经介绍过这一点,我在堆栈溢出上查看了几个类似的问题,但无法使它们适应我的情况。

最佳答案

由于 json 的类型为 Any,因此您需要将其转换为更具体的类型,即字典数组。

if let feeds = json["feeds"] as? [[String:Any]] {
for feed in feeds {
if let field1 = feed["field1"] as? Double {
//do whatever you need to with field1
}
if let field2 = feed["field2"] as? Double {
//do whatever you need to with field2
}
}
}

关于json - 如何使用 SWIFT 3 提取嵌套 JSON 中的第一个重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45402590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com