iOS:如何使用\“quot;”获取JSON数据性格

iOS:如何使用\“quot;”获取JSON数据性格,ios,objective-c,json,Ios,Objective C,Json,我有以下格式的JSON数据: { "Data": "{ \"data\": { \"current_condition\": [ {\"cloudcover\": \"0\", \"humidity\": \"33\", \"observation_time\": \"07:40 AM\", \"precipMM\": \"0.0\", \"pressure\": \"1008\", \"temp_C\": \"29\", \"temp_F\": \"84\", \"visibility\":

我有以下格式的JSON数据:

{ "Data": "{ \"data\": { \"current_condition\": [ {\"cloudcover\": \"0\", \"humidity\": \"33\", \"observation_time\": \"07:40 AM\", \"precipMM\": \"0.0\", \"pressure\": \"1008\", \"temp_C\": \"29\", \"temp_F\": \"84\", \"visibility\": \"10\" } ] }}" }
我可以用计算机获取“数据”

但我无法访问“临时C”,因为我不知道如何获取“数据”之类的数据: 或“临时C”:“29”

在这种情况下,我想得到\“temp_C”\的值,即29。
如何实现这一点?

出于某种原因,
[objectobjectforkey:@“Data”]
不是字典,而是字符串 包含字典的JSON对象。因此,应采取以下措施:

NSDictionary *object = [NSJSONSerialization JSONObjectWithData:dataFromUrl options:kNilOptions error:&err];
NSString* tmpString = [object objectForKey:@"Data"];
NSData *tmpData = [tmpString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:tmpData options:kNilOptions error:&err];
现在,
data
是一个字典,例如,您可以访问它的内容

NSDictionary *currentCondition = data[@"data"][@"current_condition"][0];
NSString *tempC = currentCondition[@"temp_C"];

出于某种原因,
[objectobjectforkey:@“Data”]
不是字典,而是字符串 包含字典的JSON对象。因此,应采取以下措施:

NSDictionary *object = [NSJSONSerialization JSONObjectWithData:dataFromUrl options:kNilOptions error:&err];
NSString* tmpString = [object objectForKey:@"Data"];
NSData *tmpData = [tmpString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:tmpData options:kNilOptions error:&err];
现在,
data
是一个字典,例如,您可以访问它的内容

NSDictionary *currentCondition = data[@"data"][@"current_condition"][0];
NSString *tempC = currentCondition[@"temp_C"];

出于某种原因,
[objectobjectforkey:@“Data”]
不是字典,而是字符串 包含字典的JSON对象。因此,应采取以下措施:

NSDictionary *object = [NSJSONSerialization JSONObjectWithData:dataFromUrl options:kNilOptions error:&err];
NSString* tmpString = [object objectForKey:@"Data"];
NSData *tmpData = [tmpString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:tmpData options:kNilOptions error:&err];
现在,
data
是一个字典,例如,您可以访问它的内容

NSDictionary *currentCondition = data[@"data"][@"current_condition"][0];
NSString *tempC = currentCondition[@"temp_C"];

出于某种原因,
[objectobjectforkey:@“Data”]
不是字典,而是字符串 包含字典的JSON对象。因此,应采取以下措施:

NSDictionary *object = [NSJSONSerialization JSONObjectWithData:dataFromUrl options:kNilOptions error:&err];
NSString* tmpString = [object objectForKey:@"Data"];
NSData *tmpData = [tmpString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:tmpData options:kNilOptions error:&err];
现在,
data
是一个字典,例如,您可以访问它的内容

NSDictionary *currentCondition = data[@"data"][@"current_condition"][0];
NSString *tempC = currentCondition[@"temp_C"];

我无法想象为什么,但这里有一个JSON用一个属性定义一个对象,
Data
,它有一个字符串值。该字符串包含JSON。例如,您将JSON包装在JSON中

最好的答案可能是修复源代码,这样它就不会返回这种奇怪的嵌套结构

但是,要获得
温度
,首先要解码外层并从
数据
中获取字符串。然后解码该字符串以获得实际信息,如下所示:

{
    "data": {
        "current_condition": [
            {
                "cloudcover": "0",
                "humidity": "33",
                "observation_time": "07:40 AM",
                "precipMM": "0.0",
                "pressure": "1008",
                "temp_C": "29",
                "temp_F": "84",
                "visibility": "10"
            }
        ]
    }
}

从结果对象中,获取
数据
属性值(一个对象),然后获取该对象的
当前条件
属性(一个数组),获取其第一个条目(一个对象),然后从该对象中获取
温度
值。

我无法想象为什么,但是这里有一个JSON,它用一个属性定义一个对象,
Data
,这个属性有一个字符串值。该字符串包含JSON。例如,您将JSON包装在JSON中

最好的答案可能是修复源代码,这样它就不会返回这种奇怪的嵌套结构

但是,要获得
温度
,首先要解码外层并从
数据
中获取字符串。然后解码该字符串以获得实际信息,如下所示:

{
    "data": {
        "current_condition": [
            {
                "cloudcover": "0",
                "humidity": "33",
                "observation_time": "07:40 AM",
                "precipMM": "0.0",
                "pressure": "1008",
                "temp_C": "29",
                "temp_F": "84",
                "visibility": "10"
            }
        ]
    }
}

从结果对象中,获取
数据
属性值(一个对象),然后获取该对象的
当前条件
属性(一个数组),获取其第一个条目(一个对象),然后从该对象中获取
温度
值。

我无法想象为什么,但是这里有一个JSON,它用一个属性定义一个对象,
Data
,这个属性有一个字符串值。该字符串包含JSON。例如,您将JSON包装在JSON中

最好的答案可能是修复源代码,这样它就不会返回这种奇怪的嵌套结构

但是,要获得
温度
,首先要解码外层并从
数据
中获取字符串。然后解码该字符串以获得实际信息,如下所示:

{
    "data": {
        "current_condition": [
            {
                "cloudcover": "0",
                "humidity": "33",
                "observation_time": "07:40 AM",
                "precipMM": "0.0",
                "pressure": "1008",
                "temp_C": "29",
                "temp_F": "84",
                "visibility": "10"
            }
        ]
    }
}

从结果对象中,获取
数据
属性值(一个对象),然后获取该对象的
当前条件
属性(一个数组),获取其第一个条目(一个对象),然后从该对象中获取
温度
值。

我无法想象为什么,但是这里有一个JSON,它用一个属性定义一个对象,
Data
,这个属性有一个字符串值。该字符串包含JSON。例如,您将JSON包装在JSON中

最好的答案可能是修复源代码,这样它就不会返回这种奇怪的嵌套结构

但是,要获得
温度
,首先要解码外层并从
数据
中获取字符串。然后解码该字符串以获得实际信息,如下所示:

{
    "data": {
        "current_condition": [
            {
                "cloudcover": "0",
                "humidity": "33",
                "observation_time": "07:40 AM",
                "precipMM": "0.0",
                "pressure": "1008",
                "temp_C": "29",
                "temp_F": "84",
                "visibility": "10"
            }
        ]
    }
}

从结果对象中,获取
数据
属性值(一个对象),然后获取该对象的
当前条件
属性(一个数组),获取其第一个条目(一个对象),然后从该对象中获取
温度
值。

。您有一个带有单个键和值的JSON

关键是
Data
值是一个字符串:
{“Data”:{“current_condition”:[{“cloudcover”:“0”,“湿度”:“33”,“observation_time”:“07:40 AM”,“precipMM”:“0.0”,“pressure”:“1008”,“temp_C”:“29”,“temp_F”:“84”,“可见性”:“10”}

因此,该值是一个包含内部JSON对象的字符串

您需要对其进行双重反序列化

NSDictionary *JSON1 = [NSJSONSerialization JSONObjectWithData:dataFromUrl options: kNilOptions error:&err];
NSData *dataForData = [JSON1[@"Data"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *JSON2 = [NSJSONSerialization JSONObjectWithData:dataForData options: kNilOptions error:&err];

NSArray *celciusTemperatures = [JSON2 valueForKeyPath:@"data.current_condition.temp_C"];
NSString *firstCelciusTemperature = [celciusTemperatures firstObject];

哇,真是一团糟。您有一个带有单个键和值的JSON

关键是
Data
值是一个字符串:
{“Data”:{“current_condition”:[{“cloudcover”:“0”,“湿度”:“33”,“observation_time”:“07:40 AM”,“precipMM”:“0.0”,“pressure”:“1008”,“temp_C”:“29”,“temp_F”:“84”,“可见性”:“10”}

因此,该值是一个包含内部JSON对象的字符串

您需要对其进行双重反序列化

NSDictionary *JSON1 = [NSJSONSerialization JSONObjectWithData:dataFromUrl options: kNilOptions error:&err];
NSData *dataForData = [JSON1[@"Data"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *JSON2 = [NSJSONSerialization JSONObjectWithData:dataForData options: kNilOptions error:&err];

NSArray *celciusTemperatures = [JSON2 valueForKeyPath:@"data.current_condition.temp_C"];
NSString *firstCelciusTemperature = [celciusTemperatures firstObject];

哇,真是一团糟。您有一个带有单个键和值的JSON

关键是
Data
值是一个字符串:
{“Data”:{“current_condition”:[{“cloudcover”:“0”,“湿度”:“33”,“observation_time”:“07:40 AM”,“precipMM”:“0.0”,“pressure”:“1008”,“temp_C”:“29”,“temp_F”:“84”,“可见性”:“10”}

因此,该值是一个包含内部JSON对象的字符串

您需要对其进行双重反序列化

NSDictionary *JSON1 = [NSJSONSerialization JSONObjectWithData:dataFromUrl options: kNilOptions error:&err];
NSData *dataForData = [JSON1[@"Data"] dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *JSON2 = [NSJSONSerialization JSONObjectWithData:dataForData options: kNilOptions error:&err];

NSArray *celciusTemperatures = [JSON2 valueForKeyPath:@"data.current_condition.temp_C"];
NSString *firstCelciusTemperature = [celciusTemperatures firstObject];

哇,真是一团糟。您有一个带有单个键和值的JSON

键是
数据