根据这些评论,JSONKit不支持ARC,甚至不在ARC环境中使用fobjc-no-arc设置运行:https: //github.com/johnezang/JSONKit/issues/37
我从http://www.bonto.ch/blog/2011/12/08/json-libraries-for-ios-comparison-updated/中提取了代码, 并在我的本地计算机上进行了测试.
我对结果感到惊讶,NSJSonSerialization提供了比JSONKit更好的性能.
NSJSonSerialization在速度方面是否真的超过了JSONKit,还是我做错了什么?
twitter_timeline.json
repeat.json
random.json
寻找一个如何发布json的例子AFHTTPClient
.我看到有一个postPath方法接受一个NSDictionary
并且AFJSONEncode方法返回一个NSData
.是否有一种简单的方法来序列化对象NSDictionary
,或者使用jsonkit是否有更简单的方法?
我只需要将对象作为json发布到REST API.
更新:所以我尝试传递一个字典,但它似乎打破序列化嵌套数组.
例如,如果我有一个对象:
Post* p = [[Post alloc] init];
p.uname = @"mike";
p.likes =[NSNumber numberWithInt:1];
p.geo = [[NSArray alloc] initWithObjects:[NSNumber numberWithFloat:37.78583], [NSNumber numberWithFloat:-122.406417], nil ];
p.place = @"New York City";
p.caption = @"A test caption";
p.date = [NSDate date];
Run Code Online (Sandbox Code Playgroud)
谁得到字典有如下数据:
{
caption = "A test caption";
date = "2011-12-13 17:58:37 +0000";
geo = (
"37.78583",
"-122.4064"
);
likes = 1;
place = "New York City";
}
Run Code Online (Sandbox Code Playgroud)
序列化将直接失败或geo不会被序列化为数组,而是像字符串文字一样 ("37.78583", "-122.4064");
我尝试使用Jsonkit和Apple的JSON序列化器,没有运气.它继续打破geo属性,这是NSNumbers的一个小组.
Post* p = [[Post alloc] init];
p.uname = @"mike";
p.likes =[NSNumber numberWithInt:1];
p.geo = [[NSArray alloc] initWithObjects:[NSNumber numberWithFloat:37.78583], [NSNumber numberWithFloat:-122.406417], nil ];
p.place = @"New York City";
p.caption = @"A test caption";
p.date = [NSDate date];
NSError* error = nil;
NSString* stuff = [[p getDictionary] JSONStringWithOptions:JKParseOptionNone error:&error];
Run Code Online (Sandbox Code Playgroud)
更新:检查错误是它失败的NSDate,而不是NSArray.如何将日期格式化程序传入函数?
更新2:解决了 - 好看了jsonkit的最新提交,看到你可以这样做:
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
NSString* result = [p.dictionary JSONStringWithOptions:JKSerializeOptionNone serializeUnsupportedClassesUsingBlock:^id(id object) {
if([object isKindOfClass:[NSDate class]]) { return([outputFormatter stringFromDate:object]); }
return(nil);
} error:nil];
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但请注意,JSONKit的这个功能是WIP,所以它可能会在下一个正式版本中发生变化.
任何人都知道如何基于NSObject类序列化嵌套的JSON?有序列化JSON简单的讨论在这里,但它不是通用的,足以应付复杂的嵌套JSON.
想象一下这是JSON的结果:
{ "accounting" : [{ "firstName" : "John",
"lastName" : "Doe",
"age" : 23 },
{ "firstName" : "Mary",
"lastName" : "Smith",
"age" : 32 }
],
"sales" : [{ "firstName" : "Sally",
"lastName" : "Green",
"age" : 27 },
{ "firstName" : "Jim",
"lastName" : "Galley",
"age" : 41 }
]}
Run Code Online (Sandbox Code Playgroud)
从这堂课:
@interface Person : NSObject{}
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
@property (nonatomic, strong) NSNumber *age;
@end
@interface Department : NSObject{} …
Run Code Online (Sandbox Code Playgroud) 我需要构建一个基于Java的JSON数据API,可以从移动设备访问:Android,Iphone ......我已经缩小到这些:
问题:
有人可以在iphone端json库上推荐吗?gson/jackson生成数据api的json输出,必须可以从iphone中获取,而不需要对json结构进行任何特殊调整
是否有任何java Collection类型,我应该远离(在服务器端),以确保json可以直接转换为客观c对象?
还有其他陷阱吗?
注意:我知道PhoneGap,titanuim和一些等价物 - 但对它们不感兴趣.Json本来是一种通用的格式,但我之前遇到过跨库问题 - 因此这种尝试可以从之前对这个主题进行过实验的人那里理解
谢谢!
在将JSONKit.h和 JSONKit.m文件导入到我的项目中后,我收到以下错误.我浏览过并浏览过但似乎没有遇到过这些问题?
我所做的只是导入文件和构建,然后我得到这个
这是我忘记导入的东西还是...... ??????
当我在iOS7中运行我的应用程序时,我收到警告"'isa'已被弃用",我不知道如何修复此警告消息.请任何一个帮助.
array->isa = _JKArrayClass;
Run Code Online (Sandbox Code Playgroud) 将JSONkit用于启用了ARC的项目,并且存在问题.我正确地标记了文件-fno-objc-arc
并尝试了构建,但它仍然抛出了启用ARC的错误.我有什么想法可以错过吗?
为清楚起见,我在Build Phases-> Compile Sources-> JSONkit.m中标记了该文件
编辑:错误的屏幕截图.这些是我在为ARC忽略的文件添加标志之前得到的相同错误
我正在尝试解析由RESTful Web API返回的JSON数组,该API看起来类似于以下内容(使用JSONKit):
[ { "DateCreated" : "/Date(1320296400000)/",
"ID" : 1,
"Summary" : "Summary 1",
"Title" : "Title 1",
"URL" : "URL 1"
},
{ "DateCreated" : "/Date(1320296400000)/",
"ID" : 2,
"Summary" : "Summary 2",
"Title" : "Title 2",
"URL" : "URL 2"
}
]
Run Code Online (Sandbox Code Playgroud)
我使用过去的JSON通常有一个父元素,例如news:{{node1},{node2}}
,它允许我从JSON响应中提取该节点,如下所示:
NSString *response = [request responseString];
NSDictionary *deserializedData = [response objectFromJSONString];
NSArray *arrNews = [deserializedData objectForKey:@"news"];
Run Code Online (Sandbox Code Playgroud)
在我的JSON中,没有这样的节点存在,它只是一个原始数组.我如何将其拉入NSArray(或者我可以挂钩到UITableView中)?