问题:
每次,当我从Web服务器获得JSON字符串时,它看起来都是这样的:
{"array":[1,2,3],"boolean":true,"null":null,"number":123,"object":{"a":"b","c":"d","e":"f"},"string":"Hello World"}
我真的想把字符串格式重新组织成NSLog((,它是这样的:
{
"array": [
1,
2,
3
],
"boolean": true,
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d",
"e": "f"
},
"string": "Hello World"
}
问题:
有没有用适当的缩进和换行来格式化JSON NSString的快捷方式?(我知道[NSDictionary描述](
P.S
有时,JSON NSString的前缀字符串如下:
Web Service response is : {"array":[1,2,3],"boolean":true,"null":null,"number":123,"object":{"a":"b","c":"d","e":"f"},"string":"Hello World"}
任何方法或正则表达式都可以从段落中获取JSON字符串?
试试这个
NSData *data = [NSJSONSerialization dataWithJSONObject:temp options:NSJSONWritingPrettyPrinted error:nil ];
NSString* aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"result: %@", aStr);
下面的一些代码将去掉第一个大括号之前的前导字符,并在调试控制台上显示格式良好的JSON数据。
NSRange range = [str rangeOfString:@"{"];
if ( range.location != NSNotFound )
str = [str substringFromIndex:range.location];
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
id jsonData = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog( @"%@", jsonData );
尝试先将其解析为Object,然后再打印它会发生什么。如果运气好的话,Array和Dictionaries的文本表示会让你走上正轨。现在你正在打印一个字符串,它看起来总是有点像那样。
显然,您可以编写一些代码来识别大括号和逗号,并在此基础上添加行尾和缩进。不应该太难,但问题是你为什么要这样?
如果您使用它进行调试,只需在那里放置一个断点,并使用检查器在XCode中查看代码中的对象。这将向您显示对象和其中的对象,并为您提供将其表示打印到控制台的选项。