Ios 在没有结构/模型的情况下读取JSON属性
如何从服务器响应JSON字符串中提取数组 JSON对象被序列化为:Ios 在没有结构/模型的情况下读取JSON属性,ios,arrays,json,swift,Ios,Arrays,Json,Swift,如何从服务器响应JSON字符串中提取数组 JSON对象被序列化为: do { if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] { print(json) // output below } } catch let error
do {
if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
print(json) // output below
}
} catch let error {
print(error.localizedDescription)
}
结果是:
["locations": <__NSArrayM 0x280e23f90>(
{
lat = "123.111111";
long = "1.111111";
},
{
lat = "123.222222";
long = "1.222222";
},
{
lat = "123.333333";
long = "1.333333";
}
),
"mobileNo": 55551234,
"clientID": 2123456789,
"date": 10082019,
"time": 1854]
如何从json变量中读取mobileNo和clientID等属性,更重要的是,如何将locations数组放入数组或字典中
感谢您的帮助。使用JSONDecoder和Decodable 创建响应结构。 要解码的用户JSONDecoder
使用JSONDecoder和可解码 创建响应结构。 要解码的用户JSONDecoder
您能提供原始json而不是打印结果吗?另外,我建议使用-它非常容易使用,比使用JSONSerialization.jsonObject更容易。您能为我们提供原始json而不是打印结果吗?另外,我建议使用-它非常容易使用,比使用JSONSerialization.jsonObject更容易。谢谢您的详细回答。直接访问属性的缺点是什么?我们如何做到这一点,尤其是使用数组?对我来说,使用codable比直接访问属性更容易。要访问位置数组,只需像这样解析它[[String:Any]],那么对于mobileNo,它将是let-mobileNo=json[mobileNo],而位置数组将是let-locations=json[locations]as[[String:Any]]?对于mobileNo,它将是let-mobileNo=json[mobileNo]as?谢谢你详细的回答。直接访问属性的缺点是什么?我们如何做到这一点,尤其是使用数组?对我来说,使用codable比直接访问属性更容易。要访问位置数组,只需像这样解析它[[String:Any]],那么对于mobileNo,它将是let-mobileNo=json[mobileNo],而位置数组将是let-locations=json[locations]as[[String:Any]]?对于mobileNo,它将是let-mobileNo=json[mobileNo]as?Int
struct Model: Decodable {
struct Location: Decodable {
var lat: String
var long: String
}
var locations: [Location]
var mobileNo: Int
var clientId: Int
var date: Int
var time: Int
}
do {
if let response: Model = try JSONDecoder().decode(Model.self, for: data) {
print(response)
}
} catch let error {
print(error.localizedDescription)
}