次の JSON を使用しています: http://www.kb.dk/tekst/mobil/aabningstider_en.json キー「場所」で解析しようとすると、次のようになります。
// get response in the form of a utf-8 encoded json string
NSString *jsonString = [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
// get most parent node from json string
NSDictionary *json = [jsonString JSONValue];
// get key-path from jason up to the point of json object
NSDictionary *locations = [json objectForKey:@"location"];
NSLog( @"%@", locations );
// iterate through all of the location objects in the json
for (NSDictionary *loc in locations )
{
// pull library name from the json object
NSString *name = [loc valueForKey:@"name"];
// add library data table arrays respectively
[ libraryNames addObject: ( ( name == nil | name.length > 0 ) ? name : @"UnNamed" ) ];
}
NSLog を介してオブジェクトの場所を出力すると、次のようになります。
{
address = "Universitetsparken 4, 3. etage, 2100 K\U00f8benhavn \U00d8";
desc = "";
lastUpdated = "";
latlng = "55.703124,12.559596";
link = "http://www.farma.ku.dk/index.php?id=3742";
name = "Faculty of Pharmaceutical Sciences Library";
parts = {
part = {
hour = {
day = "5.June Constitution Day (Denmark)";
open = Closed;
};
hours = {
hour = {
day = Friday;
open = "10-16";
};
};
name = main;
};
};
}
「場所」キーの最後の値のみです。私は何か間違ったことをしていますか?http://jsonlint.com/経由で JSON を検証しようとしましたが、上記のように JSON URL を入力すると、「有効」と表示されました - それでも最後の「場所」キーのみが表示されました」 -貼り付けると、JSON が検証されず、文字列から改行を削除して修正する必要があります。
また、JSON を解析して「名前」フィールドを取得しようとすると、次の例外が発生します。
2012-05-08 15:37:04.941 iPhone App Tabbed[563:f803] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFString 0x68bfe70> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.'
*** First throw call stack:
(0x13dc052 0x156dd0a 0x13dbf11 0x9d2f0e 0x941841 0x940ca9 0x4593 0xf964e 0x114b89 0x1149bd 0x112f8a 0x112e2f 0x1148f4 0x13ddec9 0x365c2 0x3655a 0x25b569 0x13ddec9 0x365c2 0x3655a 0xdbb76 0xdc03f 0xdbbab 0x25dd1f 0x13ddec9 0x365c2 0x3655a 0xdbb76 0xdc03f 0xdb2fe 0x5ba30 0x5bc56 0x42384 0x35aa9 0x12c6fa9 0x13b01c5 0x1315022 0x131390a 0x1312db4 0x1312ccb 0x12c5879 0x12c593e 0x33a9b 0x281d 0x2785)
terminate called throwing an exception(lldb)
「locations」タグが角かっこ ([]) で囲まれた配列オブジェクトであれば、より理にかなっていますが、現在は通常のキーと値のペアのシーケンスにすぎません...悲しいことに、それは私が使用しなければならない JSON です。 .
助けてください、そしてどうもありがとう!:)
敬具、ピョートル。