如何处理JSON解析为空
2016-08-25 00:00
351 查看
摘要: 开发中没有无缘无故的BUG,也没有无缘无故的解决方案.
不知便是道,即不知道.
字典在开发过程中尤为重要.字典的来源有很多,比如:直接创建,NSData,Mode,或者JSON字符串.
现在主要来谈谈用JSON字符串转字典的情况.现在有一个JSON字符串,如下:
{"CoderHG":" 鸿歌","love":"你,我,她","oschinaAddress" :"http://my.oschina.net/CoderHG/blog"}
这个JSON字符串的字典格式为:
{
"CoderHG": " 鸿歌",
"love": "你,我,她",
"oschinaAddress": "http://my.oschina.net/CoderHG/blog"
}
那么问题来了,在代码中应该如何转换呢?转换Cede如下:
NSString* jsonStr = @"{\"CoderHG\":\" 鸿歌\",\"love\":\"你,我,她\",\"oschinaAddress\" :\"http://my.oschina.net/CoderHG/blog\"}";
NSData* jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
NSLog(@"\n解析结果 :\n %@", jsonDict);
打印结果:
解析结果 :
{
CoderHG = "\U00a0\U9e3f\U6b4c";
love = "\U4f60,\U6211,\U5979";
oschinaAddress = "http://my.oschina.net/CoderHG/blog";
}
算是完美!
但是我的问题来了:在上面的JSON字符串中,我希望"love"的value弄成用换行显示,如下:
{"CoderHG":" 鸿歌","love":"你\n我\n她","oschinaAddress" :"http://my.oschina.net/CoderHG/blog"}
用上面的Code再次转换:
NSString* jsonStr = @"{\"CoderHG\":\" 鸿歌\",\"love\":\"你\n我\n她\",\"oschinaAddress\" :\"http://my.oschina.net/CoderHG/blog\"}";
NSData* jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
NSLog(@"\n二次解析结果 :\n %@", jsonDict);
打印结果:
二次解析结果 :
(null)
这到底是怎么会呢???这才是我写这篇博客的主要目的,当然了.到这里,你应该知道解析出错的原因就是将"love"的value换了一个显示格式而已.那如何去解决呢?
如果你将{"CoderHG":" 鸿歌","love":"你\n我\n她","oschinaAddress" :"http://my.oschina.net/CoderHG/blog"}copy到http://www.bejson.com/jsonviewernew/,你会发现是能正常解析的!
在这里,直接给出答案:
在转成jsonData之前,加上这一句就OK了.具体是什么原因,你应该知道!
jsonStr = [jsonStr stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"];
最终的打印结果:
最终解析结果 :
{
CoderHG = "\U00a0\U9e3f\U6b4c";
love = "\U4f60\n\U6211\n\U5979";
oschinaAddress = "http://my.oschina.net/CoderHG/blog";
}
结论:如果,你发现自己在JSON转换的时候,发现一切都正常,解释解析为空的时候,请查看是否用"\n",如果有,需要转义一下!当然,这只是其中的一种可能!
完美!
谢谢!
不知便是道,即不知道.
字典在开发过程中尤为重要.字典的来源有很多,比如:直接创建,NSData,Mode,或者JSON字符串.
现在主要来谈谈用JSON字符串转字典的情况.现在有一个JSON字符串,如下:
{"CoderHG":" 鸿歌","love":"你,我,她","oschinaAddress" :"http://my.oschina.net/CoderHG/blog"}
这个JSON字符串的字典格式为:
{
"CoderHG": " 鸿歌",
"love": "你,我,她",
"oschinaAddress": "http://my.oschina.net/CoderHG/blog"
}
那么问题来了,在代码中应该如何转换呢?转换Cede如下:
NSString* jsonStr = @"{\"CoderHG\":\" 鸿歌\",\"love\":\"你,我,她\",\"oschinaAddress\" :\"http://my.oschina.net/CoderHG/blog\"}";
NSData* jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
NSLog(@"\n解析结果 :\n %@", jsonDict);
打印结果:
解析结果 :
{
CoderHG = "\U00a0\U9e3f\U6b4c";
love = "\U4f60,\U6211,\U5979";
oschinaAddress = "http://my.oschina.net/CoderHG/blog";
}
算是完美!
但是我的问题来了:在上面的JSON字符串中,我希望"love"的value弄成用换行显示,如下:
{"CoderHG":" 鸿歌","love":"你\n我\n她","oschinaAddress" :"http://my.oschina.net/CoderHG/blog"}
用上面的Code再次转换:
NSString* jsonStr = @"{\"CoderHG\":\" 鸿歌\",\"love\":\"你\n我\n她\",\"oschinaAddress\" :\"http://my.oschina.net/CoderHG/blog\"}";
NSData* jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:nil];
NSLog(@"\n二次解析结果 :\n %@", jsonDict);
打印结果:
二次解析结果 :
(null)
这到底是怎么会呢???这才是我写这篇博客的主要目的,当然了.到这里,你应该知道解析出错的原因就是将"love"的value换了一个显示格式而已.那如何去解决呢?
如果你将{"CoderHG":" 鸿歌","love":"你\n我\n她","oschinaAddress" :"http://my.oschina.net/CoderHG/blog"}copy到http://www.bejson.com/jsonviewernew/,你会发现是能正常解析的!
在这里,直接给出答案:
在转成jsonData之前,加上这一句就OK了.具体是什么原因,你应该知道!
jsonStr = [jsonStr stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"];
最终的打印结果:
最终解析结果 :
{
CoderHG = "\U00a0\U9e3f\U6b4c";
love = "\U4f60\n\U6211\n\U5979";
oschinaAddress = "http://my.oschina.net/CoderHG/blog";
}
结论:如果,你发现自己在JSON转换的时候,发现一切都正常,解释解析为空的时候,请查看是否用"\n",如果有,需要转义一下!当然,这只是其中的一种可能!
完美!
谢谢!
相关文章推荐
- 深度解析cocostudio是如何处理动作编辑器导出来的Json文件(2) (转)
- JavaScript如何处理解析JSON数据详解
- JavaScript如何处理解析JSON数据详解
- 如何处理Android2.3解析json出错,4.0不报错
- 问题集录--JS如何处理和解析Json数据
- 开源Json处理工具是如何帮我们解析Json的
- JavaScript如何处理解析JSON数据详解
- 分析json、xml的区别?json、xml解析方式的底层是如何处理的?
- JavaScript如何处理解析JSON数据详解
- 如何处理解析Json中的key为中文或数字等变态数据
- JSON XML解析底层是如何处理的?
- JavaScript如何处理解析JSON数据详解
- IOS-分析JSON、XML的区别?JSON、XML解析方式的底层是如何处理的?
- 深度解析cocostudio是如何处理动作编辑器导出来的Json文件(1) (转)
- 如何传送自定义json数据并解析处理
- mvc ---- ajax 提交过来的Json格式如何处理(解析)
- Mysql中的数据用 json_decode 解析返回null的一则处理方法
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- 解析Json文本——如何将Json文本转化为Java对象
- 如何使用JSON Framework库解析与生成json数据(iphone网络篇二)