带有“(”“)”括号而不是“[”“]”的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】:您在日志输出中看到的只是NSArray
和NSDictionary
对象集合的格式,而不是实际的JSON 本身。在源 JSON 中有 [
和日志语句中有 (
的地方,你有一个数组;哪里有 你有字典。
所以需要先从单元素数组中提取字典才能使用:
NSDictionary* currentCondition = fullDictFromjson[@"current_condition"][0];
【讨论】:
谢谢!这行得通! 现在我明白了:)以上是关于带有“(”“)”括号而不是“[”“]”的JSON [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
objective-c json 解析器:如何解析以字符串而不是括号开头的 json 文件?