私が尋ねようとしているのが実際に複数のキーを持つNSDictionary
であるかどうかはわかりませんが、大丈夫です。
私がやりたいのは、データのキーと値を使用してNSDictionary
を作成し、それをJSON
形式に変換することです。 JSON
形式は次のようになります:
{
"eventData": {
"eventDate": "Jun 13, 2012 12:00:00 AM",
"eventLocation": {
"latitude": 43.93838383,
"longitude": -3.46
},
"text": "hjhj",
"imageData": "raw data",
"imageFormat": "JPEG",
"expirationTime": 1339538400000
},
"type": "ELDIARIOMONTANES",
"title": "accIDENTE"
}
私はこのようにNSDictionaries
のみを使用しました:
NSArray *keys = [NSArray arrayWithObjects:@"eventDate", @"eventLocation", @"latitude" nil];
NSArray *objects = [NSArray arrayWithObjects:@"object1", @"object2", @"object3", nil];
dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
しかし、上記の形式は、キーと値のすべてではありません。だから私の質問は、NSDictionary
フォーマットに合うようにJSON
はどうなるのか?私の投稿を読んでくれてありがとう、そして混乱があれば申し訳ありません。
別のNSDictionary
の中にNSDictonary
を入れることができることを知っていますか?
NSDictionary *eventLocation = [NSDictionary dictionaryWithObjectsAndKeys:@"43.93838383",@"latitude",@"-3.46",@"latitude", nil];
NSMutableDictionary *eventData = [NSDictionary dictionaryWithObjectsAndKeys:eventLocation,@"eventLocation", nil];
[eventData setObject:@"Jun 13, 2012 12:00:00 AM" forKey:@"eventDate"];
[eventData setObject:@"hjhj" forKey:@"text"];
.
.
.
NSMutableDictionary *finalDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:eventData,@"eventData", nil];
[finalDictionary setObject:@"ELDIARIOMONTANES" forKey:@"type"];
[finalDictionary setObject:@"accIDENTE" forKey:@"title"];
現在、Objective-Cリテラルを使用すると、これを実現するためのはるかに優れた、より簡単で、よりクリーンな方法があります。この新しい構文を使用した正確な辞書は次のとおりです。
NSDictionary *dictionary = @{
@"eventData": @{
@"eventDate": @"Jun 13, 2012 12:00:00 AM",
@"eventLocation": @{
@"latitude": @43.93838383,
@"longitude": @-3.46
},
@"text": @"hjhj",
@"imageData": @"raw data",
@"imageFormat": @"JPEG",
@"expirationTime": @1339538400000
},
@"type": @"ELDIARIOMONTANES",
@"title": @"accIDENTE"
};
// Prints: "43.93838383"
NSLog(@"%@", dictionary[@"eventData"][@"eventLocation"][@"latitude"]);
NSArrayを作成し、NSDictionaryを使用してオブジェクトにアクセスする方法は?
... NSArrayを作成
NSArray *studentkeys = [NSArray arrayWithObjects:@"studentName", @"studentBirthDate", @"studentCity", @"studentMobile" nil];
NSArray *objects = [NSArray arrayWithObjects:@"Pravin", @"27/08/1990", @"Bhavnagar",@"7878007531", nil];
... NSDictionaryを使用してNSArrayオブジェクトにアクセスする
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
構造は次のとおりです。
ルートオブジェクトはNSMutableDictionary
ですeventData
-キーとオブジェクトを使用したオブジェクトNSMutableDictionary
のキー:
->キーeventDate
オブジェクトNSString
->キーeventLocation
オブジェクトNSMutableDictionary
キーとオブジェクト:
---->キーlatitude
オブジェクトNSNumber
---->キーlongitude
オブジェクトNSNumber
->キーtext
オブジェクトNSString
->キーimageData
オブジェクトNSString
は後でNSData
に変換されます
->キーimageFormat
オブジェクトNSString
->キーexpirationTime
オブジェクトNSNumber
type
オブジェクトのキーNSString
title
オブジェクトのキーNSString
複数のカテゴリが必要な場合は、この形式に従うことができます
NSDictionary *jsonObject = @{
@"data1":@[
@{
@"title":@"A"
@"subData" : @[
@{
@"title":@"aa"
}]
}
]
};