任何快捷方式或开源代码都可以在Objective-C中使用适当的缩进来格式化JSON字符串



问题:

每次,当我从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中查看代码中的对象。这将向您显示对象和其中的对象,并为您提供将其表示打印到控制台的选项。

最新更新