在ios中也经常需要操作json object,特别是与服务端交互的时候
项目中数据库访问用了FMDB组件,有一个很方便的API,可以直接返回一个NSDictionary
FMResultSet *rs = [db executeQuery:sql, latestObj, nowObj, latestObj, nowObj];
while ([rs next]) {
[result addObject:[rs resultDictionary]];
}
然后我想把NSDictionary直接转成NSString,通过description方法
[middle appendString:[row description]];
但是这样不行,虽然返回值类型是NSString,但并不是正确的json格式。在网上搜索了一番,需要先从NSDictionary转为NSData,再从NSData得到NSString,格式就是正确的了:
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:row options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
关键就是dataWithJSONObject方法,参数是NSDictionary,返回值是NSData。然后再通过NSString的initWithData方法,得到正确的NSString
还有另一个相反的API,可以从NSData得到NSDictionary,然后就可以调用NSDictionary的API来操作json object
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSError *error = nil;
NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:response options:kNilOptions error:&error];// 包含两个key,code和result,或者code和error
NSNumber *code = [jsonArray objectForKey:@"code"];
if([code intValue] == 0){
NSLog(@"添加备份记录成功", nil);
}
上面代码调用了JSONObjectWithData,从NSData得到NSDictionary,NSDictionary就视为一个json object
分享到:
相关推荐
// 如果json有嵌套,即value里有array、object,如果再使用objectFromJSONString,程序可能会报错(测试结果表明: 使用由网络或得到的php/json_encode生成的json时会报错,但使用NSString定义的json字符串时,解析...
但是会有一些问题,当读取的json值不确定时,会出现type cast的异常,比如当读取的值是String字符串,但是当做Integer来读,或者读取的是Float,但是当做String来读的时候,就会报错了。这个版本处理掉了这个问题,...
在ios应用中,如果从网络请求数据,返回json或者是xml格式的数据时,经常会遇到空串,一般接口是用java等语言写的,如果是安卓,因为源语言都是java,只需判断是否等于null即可,但是在ios中会出现各种各项的形式,...
操作系统反射套件OSReflectionKit 是适用于 iOS 和 Mac OS X 的轻量级对象反射库,它允许您从简单的对象或 JSON 字符串实例化对象。 例如,从字典甚至直接从 JSON 字符串实例化一个对象是多么容易:从 JSON 字符串...
ILJSON数据 ILJSONData 它是一个简单的 JSON-Object 匹配器,这个项目... 请注意,模型属性必须是 NSString(对于字符串)、NSNumber(整数、浮点数、双精度数、布尔值)、NSArray 和 ILJSONData 子类。 好好享受!
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...
J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...