NSDictionary转换成JSON字符串
普通情况下,你可能会用一个NSDictionary的分类去做NSDictionary转JSON,如下代码:
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&error];
if (! jsonData) {return @"{}";
} else {return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
然而,NSDictionary装的数据类型鱼龙混杂,有可能是NSDate
,NSNumber
,NSValue
等Objective-C对象,而[NSJSONSerialization dataWithJSONObject:options:error:]
这个方法是不能解析这些对象的,如果有这些对象,则会导致crash。所以我们应该在调用NSJSONSerialization
之前加一步,将所有数据处理成NSString
,代码如下:
NSError *error = nil;
NSData *jsonData = nil;
if (!self) {return nil;
}
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {NSString *keyString = nil;NSString *valueString = nil;if ([key isKindOfClass:[NSString class]]) {keyString = key;}else{keyString = [NSString stringWithFormat:@"%@",key];}if ([obj isKindOfClass:[NSString class]]) {valueString = obj;}else{valueString = [NSString stringWithFormat:@"%@",obj];}[dict setObject:valueString forKey:keyString];
}];
jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
if ([jsonData length] == 0 || error != nil) {return nil;
}
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
return jsonString;
这样就NSDictionary转JSON就不会crash了,同理,NSArray
也应该这样做。
NSDictionary转换成JSON字符串相关推荐
- 读取CSV文件内容,将其转换成JSON字符串输出
CsvToJsonUtil 工具类作用:读取CSV文件内容,将其转换成JSON字符串输出 转换工具类代码如下: package com.test.util;import java.io.*; impo ...
- 把对象转换成JSON字符串 第二稿支持移动设备
/*** 导入jackson包 把对象转换成JSON字符串 第二稿 支持移动设备* @param pn* @param request* @return*/@RequestMapping(value ...
- Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象
文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...
- JSONSerializer把类转换成JSON字符串
JSONSerializer把类转换成JSON字符串 阅读优秀的代码真的是种享受,从ProMesh的项目中发现了现在的一段优美的代码,记下来,也让喜欢它的人有机会阅读到. //============ ...
- 将map转换成json字符串
import java.util.HashMap;import java.util.Map;import net.sf.json.JSONObject;public class Transfer {p ...
- 分享一个小工具:Excel表高速转换成JSON字符串
在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...
- FastJson PropertyNamingStrategy 转换成JSON字符串的四种格式配置及源码解析
FastJson在将bean转成JSON字符串时, 默认使用CamelCase(驼峰命名)的配置; 在1.2.15版本之后,FastJson支持配置PropertyNamingStrategy,有四种 ...
- java bean 转json 串,终于找到了一篇能看懂的如何把javabean转换成json字符串的文章,嘿嘿,分享一下!...
学会了在j2ee中使用ajax后,有时候从服务器返回客户端的数据是对象,自己手动拼凑 json字符串容易出错,通过谷歌知道了json-lib这个类库,方便的支持java中对象到json字符串的转化. ...
- String转JSONObject,JSONObject转JSONArray,JSONArray数组转换成JSON字符串
如果用的是jar包 则导包为 net.sf.json.JSONObject 如果用的是fastjson 则导包为 import com.alibaba.fastjson.JSONObject 以下为 ...
最新文章
- 单向链表的有关操作(链式存储结构)
- idea创建包怎么让包分层_干货 | 通勤包怎么选?我推荐这6只
- 微信小程序tabBar导航栏页和其他页执行onLoad与onShow时机;tabBar页获取不到参数问题;navigateTo跳转无效问题;onShow执行两次问题;
- 算法入门篇 一 时间复杂度
- python批量修改文件名为excel中指定名称_在Python脚本的帮助下,使用excelsh中的名称映射重命名文件夹中的文件名...
- MFC返回的临时对象指针成因?
- 如何在logcat中获取多个tag标签的过滤信息
- 【Elasticsearch】 es 索引 内置 字段 _source
- Python培训班怎么选?
- Android9.0添加HIDL
- LNMP平台部署及应用
- cad道路里程桩号标注_cad桩号标注插件
- android9.0官方下载,安卓9.0系统刷机包下载
- opencv-python对大视频切割成小视频
- linux命令man ls,linux 命令ls man手册的详解
- php 判断华为手机,一招教你如何看穿华为手机的内存类型
- 子网掩码和IP地址的关系
- 使用VMware 16 安装中标麒麟 7
- 在PC体验sailfishos(旗鱼)系统
- [buuctf]crypto刷题学习记录(1-22)