繁体   English   中英

解析JSON iOS时出现错误

[英]Getting error when parsing JSON iOS

从Web服务获取字符串后,我需要解析它们。 但是出了点问题。

这是我的代码;

NSString *responseString = [request responseString];

    NSLog(@"response String = %@",responseString);

    NSData *tempData = [responseString dataUsingEncoding:NSUTF8StringEncoding];

    NSError *error = nil;

    NSString *innerJson = [NSJSONSerialization JSONObjectWithData:tempData
                                                          options:NSJSONReadingAllowFragments error:&error];      

    NSLog(@"innerJson = %@",innerJson);
    NSArray *entries = [NSJSONSerialization JSONObjectWithData:[innerJson dataUsingEncoding:NSUTF8StringEncoding]
                                                       options:0 error:&error];

    NSLog(@"entries = %@",entries);

    for (NSDictionary *entry in entries) {
        NSLog(@"entry = %@",entry);
        NSString *message = [entry objectForKey:@"message"];
        NSLog(@"message = %@",message );

        NSString* result = [entry objectForKey:@"result"];
        NSLog(@"result = %@", result);

    }

这是我的输出;

innerJson = {"result": false,"message":"message!"}//I need parse this string.
entries = {
message = "message!";
result = 0;
}
entry = message

我在for循环中遇到错误。 我究竟做错了什么? 感谢您的关注和咨询。

问题在于

NSArray *entries = [NSJSONSerialization 

您将结果分配给NSArray,并且JSON对象是一个字典,因此您应该将其分配给NSDictionary。 然后,不需要for循环-您可以执行以下操作:

NSDictionary *entries = [NSJSONSerialization JSONObjectWithData:[innerJson dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&error];

NSLog(@"entries = %@",entries);
NSString *message = [entries objectForKey:@"message"];
NSLog(@"message = %@",message );

NSString* result = [entries objectForKey:@"result"];
NSLog(@"result = %@", result);

在NSJSONSerialization文档中阅读更多详细信息。

我不确定-但我想这段代码应该对您有用:

NSString *responseString = [request responseString];
NSLog(@"response String = %@",responseString);
NSData *tempData = [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
/* assuming it is a dictionary */
NSDictionary *inner = [NSJSONSerialization JSONObjectWithData:tempData
                                                      options:NSJSONReadingAllowFragments error:&error];
NSLog(@"inner = %@",inner);
for(id key in inner) {
    id value = [inner objectForKey:key];
    NSLog(@"key=%@, value=%@", key, value);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM