`

ios中json object转换成字符串

 
阅读更多

在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
分享到:
评论

相关推荐

    iOS下json解析工具

    // 如果json有嵌套,即value里有array、object,如果再使用objectFromJSONString,程序可能会报错(测试结果表明: 使用由网络或得到的php/json_encode生成的json时会报错,但使用NSString定义的json字符串时,解析...

    Delphi x-superobject 跨平台的JSON处理单元andriod ios可用

    但是会有一些问题,当读取的json值不确定时,会出现type cast的异常,比如当读取的值是String字符串,但是当做Integer来读,或者读取的是Float,但是当做String来读的时候,就会报错了。这个版本处理掉了这个问题,...

    Objective-C处理空字符串和页面传值及自定义拷贝

    在ios应用中,如果从网络请求数据,返回json或者是xml格式的数据时,经常会遇到空串,一般接口是用java等语言写的,如果是安卓,因为源语言都是java,只需判断是否等于null即可,但是在ios中会出现各种各项的形式,...

    OSReflectionKit:轻量级对象反射库,允许您从 NSDictionary 对象或 JSON 字符串实例化对象。 它还支持核心数据

    操作系统反射套件OSReflectionKit 是适用于 iOS 和 Mac OS X 的轻量级对象反射库,它允许您从简单的对象或 JSON 字符串实例化对象。 例如,从字典甚至直接从 JSON 字符串实例化一个对象是多么容易:从 JSON 字符串...

    ILJSONData:适用于 iOS 的 JSON-NSObject 解析器

    ILJSON数据 ILJSONData 它是一个简单的 JSON-Object 匹配器,这个项目... 请注意,模型属性必须是 NSString(对于字符串)、NSNumber(整数、浮点数、双精度数、布尔值)、NSArray 和 ILJSONData 子类。 好好享受!

    java开源包1

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包11

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包2

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包3

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包6

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包5

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包10

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包4

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包8

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包7

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包9

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包101

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    Java资源包01

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

Global site tag (gtag.js) - Google Analytics