オブジェクトのコレクションを保持する NSMutableArray があり、各オブジェクトには NSString 型の 3 つのパラメーターがあります。私がする必要があるのは、このコレクションを繰り返し処理し、2 つのサブセクションを持つ単一の JSON ドキュメントを作成することです。1 つは「テスト結果」と呼ばれ、もう 1 つは「レポート」と呼ばれます。NSMutable 配列の各オブジェクトには 3 つの NSString パラメータがあり、これらのパラメータの 1 つは「testResult」と呼ばれます。
「testResult」の値が「pass」または「fail」の場合、そのオブジェクトは「Test Result」セクションに入る必要があります。パラメータの値が「na」の場合、オブジェクトは「Reports」セクションに入ります。「テスト結果」セクションには、「名前」、「日付」、「テスト結果」の 3 つの「要素」が必要です。"Reports" セクションには、"Name" と "Date" の 2 つの要素のみが必要です。私の問題は、for ループを使用して NSMutableArray を反復処理する方法ではなく、NSMutableArray を反復処理し、上記で説明したように JSON ドキュメントを作成する方法です。
私のコードは次のようになります。
//creating beginning of JSON document here
for (Person *personObject in testResultArray) {
if (personObject.testResult == @"na") {
//construct JSON object for "Reports" section
NSString *jsonString1 = personObject.name;
NSString *jsonString2 = personObject.date;
NSData *data1 = [jsonString1 dataUsingEncoding:NSUTF8StringEncoding];
NSData *data2 = [jsonString2 dataUsingEncoding:NSUTF8StringEncoding];
NSError * error = nil;
id json1 = [NSJSONSerialization JSONObjectWithData:data1 options:0 error:&error];
id json2 = [NSJSONSerialization JSONObjectWithData:data2 options:0 error:&error];
}
else {
//construct JSON object for "Test Results" section
NSString *jsonString1 = personObject.name;
NSString *jsonString2 = personObject.date;
NSString *jsonString3 = personObject.testResult;
NSData *data1 = [jsonString1 dataUsingEncoding:NSUTF8StringEncoding];
NSData *data2 = [jsonString2 dataUsingEncoding:NSUTF8StringEncoding];
NSData *data3 = [jsonString3 dataUsingEncoding:NSUTF8StringEncoding];
NSError * error = nil;
id json1 = [NSJSONSerialization JSONObjectWithData:data1 options:0 error:&error];
id json2 = [NSJSONSerialization JSONObjectWithData:data2 options:0 error:&error];
id json3 = [NSJSONSerialization JSONObjectWithData:data3 options:0 error:&error];
}
}
//close the JSON document construction, and return JSON document.