每当我从Web Server获得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说明])
有时候,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字符串吗?
答案 0 :(得分:3)
试试这个
NSData *data = [NSJSONSerialization dataWithJSONObject:temp options:NSJSONWritingPrettyPrinted error:nil ];
NSString* aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"result: %@", aStr);
答案 1 :(得分:1)
首先尝试将其解析为Object,然后看看如果打印它会发生什么。幸运的是,Array和Dictionaries的文本表示将帮助您顺利进行。现在你正在打印一个字符串,它看起来总是那样。
显然,您可以编写一些识别大括号和逗号的代码,并在此基础上添加行尾和缩进。不应该太难,但问题是你为什么要这么做?
如果您使用它进行调试,只需在那里放置一个断点,然后使用检查器在XCode中查看代码中的对象。这将显示对象和对象,并为您提供将其表示打印到控制台的选项。
答案 2 :(得分:1)
这里有一些代码可以将前导字符剥离到第一个大括号,并在调试控制台上显示格式良好的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 );