NSJSONSerialization.JSONObjectWithData 更改字段类型

NSJSONSerialization.JSONObjectWithData changes field type

我从服务器收到以下 JSON 响应:

{
   "userId":"123456789",
   "displayName":"display name"
}

当我使用 NSJSONSerialization.JSONObjectWithData 然后打印结果 NSDictionary 我在控制台中看到以下内容:

userId = 123456789 displayName = "display name"

为什么 JSONObjectWithDatauserId 字段类型从字符串更改为数字?

没有。 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)
}