iOS:如何使用\“quot;”获取JSON数据性格
我有以下格式的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\":
{ "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 键是
数据