Objective-C JSON 类型
Posted
技术标签:
【中文标题】Objective-C JSON 类型【英文标题】:Objective-C JSON types 【发布时间】:2012-05-02 01:36:36 【问题描述】:我在 ios 5 项目中使用NSJSONSerialization JSONObjectWithData:options:error:
来读取 JSON 字符串并将其转换为 Foundation 对象。有没有一种简单的方法可以确定对象或其某些子对象是数组、字典、数字还是字符串?
【问题讨论】:
【参考方案1】:您可以使用-isKindOfClass:
方法检查返回的对象是否为某个类。例如,检查它是否是一个数组:
id jsonObj = [NSJSONSerialization JSONObjectWithData:...]
if ([jsonObj isKindOfClass:[NSArray class]]
// Do array stuff...
对于其他基础类型也是如此。
【讨论】:
【参考方案2】:请谨慎使用NSJSONSerialization
,因为它仅支持 iOS 5.0+ 和 Mac OS X 10.7+。
我觉得你也可以试试第三方库,比如:
JSONKit(根据其介绍比NSJSONSerialization
快)
SBJson
两者都易于使用且灵活。
【讨论】:
我使用 SBJson 框架 已经有一段时间了,它对我来说效果很好...... ;-) 这很好,但它并不能真正回答问题......这可能更适合作为评论。【参考方案3】:所有对象都可以回答他们的类。更有用的是,您可以询问某物是否是某个类或其任何子类的成员:
id jsonParse;
if ([jsonParse isKindOfClass:[NSArray self]])
for (id element in (NSArray *)jsonParse)
// and so on
【讨论】:
[NSArray self]
看起来很奇怪(尽管它确实有效); [NSArray class]
是更典型的 Objective-C 惯用语言。
它更典型,但有点错误。向一个类询问它的类就是询问它的元类(一个概念在Objective C 中幸好没有)。然而,为自己上一堂课是清楚、正确的,而且我敢说……优雅。以上是关于Objective-C JSON 类型的主要内容,如果未能解决你的问题,请参考以下文章
objective-C nil,Nil,NULL 和NSNull的小结
Objective-C:来自 jquery 回调的 json 响应
java 怎么将List<List<Object>>类型转换成json类型,怎么读取json类型
JsonResult(object) 导致“不支持集合类型'Newtonsoft.Json.Linq.JToken'。”
在 graphql-tag 中定义 JSON/Object 类型
找不到“object”类型的不同支持对象“[object Object]”。仅支持在从 JSON 文件读取和解析数据时绑定到 Iterables