NSJSONSerialization.JSONObjectWithData 更改字段类型
NSJSONSerialization.JSONObjectWithData changes field type
我从服务器收到以下 JSON 响应:
{
"userId":"123456789",
"displayName":"display name"
}
当我使用 NSJSONSerialization.JSONObjectWithData
然后打印结果 NSDictionary
我在控制台中看到以下内容:
userId = 123456789
displayName = "display name"
为什么 JSONObjectWithData
将 userId
字段类型从字符串更改为数字?
没有。 JSON 反序列化尊重数据类型并将维护它。你无法从简单的描述日志中分辨出数据类型,你需要实际询问class。描述日志将引用一些对人类更有意义的内容 reader,例如描述中的空格,但在某些情况下它也会省略引号。
没有。
不要从其日志表示中推断变量类型,只需测试即可。用这个点燃一个游乐场,例如:
let str = "{\"userId\":\"123456789\",\"displayName\":\"display name\"}"
if let data = str.dataUsingEncoding(NSUTF8StringEncoding),
jsonResult = try? NSJSONSerialization.JSONObjectWithData(data, options: []),
jsonObject = jsonResult as? [String:String],
id = jsonObject["userId"] {
print("User ID is " + id)
}
我从服务器收到以下 JSON 响应:
{
"userId":"123456789",
"displayName":"display name"
}
当我使用 NSJSONSerialization.JSONObjectWithData
然后打印结果 NSDictionary
我在控制台中看到以下内容:
userId = 123456789 displayName = "display name"
为什么 JSONObjectWithData
将 userId
字段类型从字符串更改为数字?
没有。 JSON 反序列化尊重数据类型并将维护它。你无法从简单的描述日志中分辨出数据类型,你需要实际询问class。描述日志将引用一些对人类更有意义的内容 reader,例如描述中的空格,但在某些情况下它也会省略引号。
没有。
不要从其日志表示中推断变量类型,只需测试即可。用这个点燃一个游乐场,例如:
let str = "{\"userId\":\"123456789\",\"displayName\":\"display name\"}"
if let data = str.dataUsingEncoding(NSUTF8StringEncoding),
jsonResult = try? NSJSONSerialization.JSONObjectWithData(data, options: []),
jsonObject = jsonResult as? [String:String],
id = jsonObject["userId"] {
print("User ID is " + id)
}