私は今約2時間探し回っていますが、誰もObjective CでJSONファイルを読み取る方法の明確な説明をしていないようです。
次のようなcolors.json
というJSONファイルがあるとします。
{
"colors": [{
"name": "green",
"pictures": [{
"pic": "pic1.png",
"name": "green1"
}, {
"pic": "pic2.png",
"name": "green2"
}]
}, {
"name": "yellow",
"pictures": [{
"pic": "pic3.png",
"name": "yellow1"
}]
}]
}
XCodeパスのどこにそのファイルをコピーしますか?
このファイルをプログラムで取得するにはどうすればよいですか?
このファイルを取得した後-各name
オブジェクトのcolors
値を読み取るにはどうすればよいですか?
「green
という名前の色の各画像について、NSStringでname
値を取得する」と言うにはどうすればよいですか?
私はいくつかの方法を試してきましたが、まだ結論に達していません。 JSONの概念を間違って理解しているだけですか?
JSONファイルをXcodeのプロジェクトナビゲーターペインにドラッグするだけで、クラスファイルと同じ場所に表示されます。
「必要に応じてアイテムをコピー」チェックボックスを選択し、正しいターゲットに追加してください。
次に、このような何かをします:
- (void)doSomethingWithTheJson
{
NSDictionary *dict = [self JSONFromFile];
NSArray *colours = [dict objectForKey:@"colors"];
for (NSDictionary *colour in colours) {
NSString *name = [colour objectForKey:@"name"];
NSLog(@"Colour name: %@", name);
if ([name isEqualToString:@"green"]) {
NSArray *pictures = [colour objectForKey:@"pictures"];
for (NSDictionary *picture in pictures) {
NSString *pictureName = [picture objectForKey:@"name"];
NSLog(@"Picture name: %@", pictureName);
}
}
}
}
- (NSDictionary *)JSONFromFile
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"colors" ofType:@"json"];
NSData *data = [NSData dataWithContentsOfFile:path];
return [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
}