gpt4 book ai didi

数组解析中的JSON数组,SWIFTYJson

转载 作者:搜寻专家 更新时间:2023-10-31 22:54:44 26 4
gpt4 key购买 nike

我一直在学习 SWIFT 应用程序中的 JSON 解析。到目前为止,我一直在使用一个简单的免费 API,没有遇到任何问题,应用程序按设计运行。但现在我正在调用一个 API,该 API 返回一个数组内的一个数组。我已经阅读并准备好我的变量以按照指示访问元素,但 SWIFT 仍然看不到返回的 JSON 中的任何数据。我已经为此苦苦挣扎了 2 天,更改了我在网上可以找到和想到的所有内容,但我的默认变量仍然没有被 JSON 中的数据覆盖。使用 pod SWIFTYJson。

JSON 部分摘录:

    {
"list" : [
{
"main" : {
"grnd_level" : 984.67999999999995,
"temp_min" : 283.30000000000001,
"temp_max" : 284.54599999999999,
"temp" : 283.30000000000001,
"sea_level" : 1022.5,
"pressure" : 984.67999999999995,
"humidity" : 88,
"temp_kf" : -1.25
},
"clouds" : {
"all" : 0
},
"weather" : [
{
"main" : "Clear",
"icon" : "01n",
"description" : "clear sky",
"id" : 800
}
],

处理代码:

func getWeatherData(url: String, parameters: [String : String]){
//make http request and handle the JSON response
print("\(url)\(parameters)")
Alamofire.request(url, method: .get, parameters: parameters).responseJSON {
response in //in means you are inside a closure (function inside a function)
if response.result.isSuccess {
print("Successfully got the weather data!")

let weatherJSON : JSON = JSON(response.result.value!) //saving the JSON response to a constant weathrJSON . We are using ! to self unwrap the value.
self.updateWeatherData(json: weatherJSON) //func to parse our json from API. Self tells the compiler to look for the method inside the current class

print(weatherJSON)
} else {
self.cityName.text = "Unable to fetch weather - please check active connection."
}

}
}

func updateWeatherData(json: JSON) {
(...)
//parse JSON for weather forecast day 1
weatherDataModel.weatherTest1 = json["list"][0]["weather"][0]["id"].intValue

//parse JSON for weather forecast day 2
weatherDataModel.weatherTest2 = json["list"][8]["weather"][0]["id"].intValue

//parse JSON for weather forecast day 3
weatherDataModel.weatherTest3 = json["list"][16]["weather"][0]["id"].intValue

print("TEST variable 1: \(weatherDataModel.weatherTest1)")
print("TEST variable 2: \(weatherDataModel.weatherTest2)")
print("TEST variable 3: \(weatherDataModel.weatherTest3)")

打印到控制台的变量与默认值保持不变:

TEST variable 1: 0
TEST variable 2: 0
TEST variable 3: 0

最佳答案

您以错误的方式解析数据。

json["list"] 只是 JSON 对象而不是数组对象,那么如何使用 [0] 将索引传递给。

这应该按以下解决方案更正。

weatherDataModel.weatherTest1 = json["list"].arrayValue[0]["weather"].arrayValue[0]["id"].intValue

关于数组解析中的JSON数组,SWIFTYJson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50869448/

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