Xcode 如何 NSLog 一个 JSON
Posted
技术标签:
【中文标题】Xcode 如何 NSLog 一个 JSON【英文标题】:Xcode how to NSLog a JSON 【发布时间】:2011-08-17 18:47:23 【问题描述】:有没有办法让 NSLog 打印出整个 JSON 文件。我现在说的是
NSString *deviceInfo = [NSString stringWithFormat:@"%@ %@",
[[UIDevice currentDevice]model], [[UIDevice currentDevice]systemVersion]];
NSDictionary *json = [deviceInfo JSONValue];
NSLog(@"json file = %@", json);
它正在打印出“json file = (null)”
谢谢 克林顿
【问题讨论】:
【参考方案1】:我认为您误解了 JSON 的用途。您传递给 -JSONValue
的字符串不是有效的 JSON 字符串,因此它返回 nil。您不妨自己构建字典:
UIDevice *device = [UIDevice currentDevice];
NSDictionary *deviceInfo = [NSDictionary dictionaryWithObjectsAndKeys:[device model], @"deviceModel", [device systemVersion], @"deviceSystemVersion", nil];
那么,如果您想要对象的 JSON 字符串表示形式(例如,用于发送到您的服务器):
NSString *jsonDeviceInfo = [deviceInfo JSONRepresentation];
【讨论】:
谢谢你,它工作得很好。它目前正在打印出这个"deviceModel":"iPod touch","deviceSystemVersion":"4.3.5"
,如果我想拥有多个块以及每个块外部的东西,比如"hardware":"deviceModel":"iPod touch" "os":"deviceSystemVersion":"4.3.5"
,我该怎么做。
只嵌套字典。 [NSDictionary dictionaryWithObjectsAndKeys:someDictionary, @"someKey", someOtherDictionary, @"someOtherKey", nil]
是的。还有一件事。我似乎无法更改 NSDictionary 中的顺序。我有NSDictionary *fullJSON = [NSDictionary dictionaryWithObjectsAndKeys: hardware, @"hw", os, @"os", nil];
,但它正在打印出"os":"ver":"4.3.5","hw":"model":"iPod touch"
我认为没有必要,但如果我能够让硬件先行就好了。
字典中键的顺序并没有真正定义。无论您在何处使用该数据,只需按照您需要的顺序提取值即可。【参考方案2】:
您确定您的代码可以正常工作吗?你的 NSDictionary 似乎是 nil ...
能否请您发布 JSONValue 的实现?
如果对象未按预期打印,您始终可以通过扩展覆盖 -(NSString *) description
方法,它将打印您指定的方式:)
【讨论】:
我试过NSLog(@"json file = %@", [json description]);
,但我仍然收到(null)。 JSONValue 似乎也有错误。上面写着-JSONValue failed. Error trace is: ( "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Unrecognised leading character\" UserInfo=0x1cc3c0 NSLocalizedDescription=Unrecognised leading character"
我不知道你说的JSONValue的实现是什么意思。
NSString 没有实现名为 JSONValue afaik 的方法,所以你一定是自己实现的?你在这个方法中使用了哪些代码?
JSONValue 来自 JSON 库。看起来像这样- (id)JSONValue SBJsonParser *jsonParser = [SBJsonParser new]; id repr = [jsonParser objectWithString:self]; if (!repr) NSLog(@"-JSONValue failed. Error trace is: %@", [jsonParser errorTrace]); [jsonParser release]; return repr;
以上是关于Xcode 如何 NSLog 一个 JSON的主要内容,如果未能解决你的问题,请参考以下文章
如何以 JSON 格式 NSLog NSData JSON 响应?