带有“(”“)”括号而不是“[”“]”的JSON [关闭]

Posted

技术标签:

【中文标题】带有“(”“)”括号而不是“[”“]”的JSON [关闭]【英文标题】:JSON with "(" ")" brackets istead of "[" "]" [closed] 【发布时间】:2013-04-18 20:34:12 【问题描述】:

在.m:

   @implementation ViewController
    
    NSDictionary *_json;


- (void)viewDidLoad

    [super viewDidLoad];


    NSURL* url = [NSURL URLWithString:@"http://api.worldweatheronline.com/free/v1/weather.ashx?q=Si%C3%B3fok&format=json&num_of_days=5&key=mykey"];

    NSData *jsonData = [NSData dataWithContentsOfURL:url];

    NSError *error;
    _json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];

    NSDictionary* fullDictFromjson = _json[@"data"];

    NSLog(@"%@",fullDictFromjson);

    NSDictionary* currentCondition = fullDictFromjson[@"current_condition"];

    NSLog(@"%@",currentCondition);

在此之后我在控制台( currentCondition )中得到了这个:

2013-04-18 22:18:16.758 weather[18111:c07] (
        
        cloudcover = 0;
        humidity = 74;
        "observation_time" = "08:18 PM";
        precipMM = "0.0";
        pressure = 1019;
        "temp_C" = 11;
        "temp_F" = 51;
        visibility = 10;
        weatherCode = 113;
        weatherDesc =         (
                        
                value = Clear;
            
        );
        weatherIconUrl =         (
                        
                value = "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0008_clear_sky_night.png";
            
        );
        winddir16Point = S;
        winddirDegree = 170;
        windspeedKmph = 5;
        windspeedMiles = 3;
    
)

我无法处理这个。

如果我在 Safari 中打开此网址:

"current_condition": [ "cloudcover": "0", ..... 所以有 "[" 而不是 "("

所以我的 json 是错误的,在 xcode 中

我该怎么办?

【问题讨论】:

你的 json 没有问题。 “Safari 中的 url”是实际 json 的文本表示。日志结果是 NSArray 中 NSDictionary 的文本表示。两者都完全正确。 是的,现在我明白了 :) 但是为什么我的问题是 -2... 【参考方案1】:

您在日志输出中看到的只是NSArrayNSDictionary 对象集合的格式,而不是实际的JSON 本身。在源 JSON 中有 [ 和日志语句中有 ( 的地方,你有一个数组;哪里有 你有字典。

所以需要先从单元素数组中提取字典才能使用:

NSDictionary* currentCondition = fullDictFromjson[@"current_condition"][0];

【讨论】:

谢谢!这行得通! 现在我明白了:)

以上是关于带有“(”“)”括号而不是“[”“]”的JSON [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

JSON文件有方括号而不是大括号

objective-c json 解析器:如何解析以字符串而不是括号开头的 json 文件?

为啥用ajax传递json数据,json的属性是用中括号的而不是点号?

javascript获取带有中文和括号的字符串

带有属性而不是元素的 Json 到 XML

json中带有中括号怎么取值?