2013-10-24 241 views
-1

嗨我試圖將我的本地數據轉換爲iOS上的json格式。 格式如下,將對象轉換爲json格式 - iOS

{ 
    "answers": [ 
     { 
      "question_id": 2, 
      "answer": "4", 
      "question_instance_id": 146 
     }, 
     { 
      "question_id": 2, 
      "answer": "4", 
      "question_instance_id": 147 
     }, 
     { 
      "question_id": 2, 
      "answer": "4", 
      "question_instance_id": 148 
     }, 
     { 
      "question_id": 3, 
      "answer": "Hdhd", 
      "question_instance_id": 149 
     } 
    ], 
    "last_name": "Jd", 
    "first_name": "Js", 
    "survey_id": 41 
} 

我通過他們瞭解JSON編碼解釋各種博客去了。但是我仍然無法弄清楚如何處理嵌套字典來將數據轉換成json形式,如本例中給出的。

我很感激任何幫助。

+0

解析它帶有一個JSON解析器(其中有6個適用於iOS的解析器),導航結果字典包含一個數組,其中包含具有良好舊數組/字典訪問方法的字典。如果所有其他問題都無法查看關於此主題的前1000個簡單問題,並查看他們是如何回答的。 –

+0

雖然您的問題可能會被解釋爲問如何去其他方向,在這種情況下,答案是將數據放入適當的字典和數組中,並通過JSON序列化程序運行它們。先看500個問題。 –

+0

如果您正確閱讀我的問題,我不是試圖解析它,而是試圖轉換成上述格式。我面臨的複雜性是它由嵌套字典組成,這就是我所迷惑的。 「適當的字典和數組」,即使我可以告訴nyways – Jayesh

回答

0

如果你熟悉iOS的數組和字典,那麼你就可以想像他們如何與JSON。 JSON只是數組和字典的編碼,所以如果您將數據匹配到與您擁有的數據相關的結構中,則JSON編碼將相同。

如果粘貼以上JSON成JSON解析器像這樣的:

JSON PARSER PAGE

你可以看到底層結構:

帶4鍵/值對字典,用鑰匙: 「答案」,「姓氏」,「名字」和「survey_id」。所有鍵的值都是原語,字符串或數字,除了第一個「答案」,它的值是一個子詞典數組,全部使用鍵:「question_id」,「answer」和「question_instance_id」

0

簡單:

NSDictionary *entireJson = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 

邏輯您NSDictionary裏面是一樣的JSON。您的回答,您可以像這樣:

NSArray *answersArray = entireJSon[@"answers"]; 

快速記事,請確保您的JSON是有效的(在這種情況下是...)

1

您需要使用NSJSONSerialization,這和你需要什麼將自動完成。請看看this鏈接。 感謝


這裏的鏈接wonderlich教程30秒的總結,它可以幫助別人。乾杯。

一切你需要了解JSON,它甚至不上滾動頁面:)

#define exampleURL [NSURL URLWithString:\ 
@"http://api.kivaws.org/v1/loans/search.json?status=fundraising"] 
-(void)viewDidLoad { [super viewDidLoad]; [self _jsonGet]; } 

-(void)_jsonGet 
    { 
    NSLog(@"I'm getting some JSON data from the net."); 
    dispatch_async(dispatch_get_main_queue(), 
     ^{ 
     NSData* dataFromNet = [NSData dataWithContentsOfURL:exampleURL]; 
     [self _jsonParse:dataFromNet]; 
     }); 
    } 

-(void)_jsonParse:(NSData *)jdat 
    { 
    NSLog(@"I did seem to get the data .. now parsing"); 
    NSError* error; 
    NSDictionary* jdic = [NSJSONSerialization JSONObjectWithData:jdat 
     options:kNilOptions 
     error:&error]; 
    // do this NSLog(@"%@", jdic); to see the fields available 

    NSArray* latestLoans = [jdic objectForKey:@"loans"]; 
    NSLog(@"loans.count: %d \n\n\n", latestLoans.count); 
    NSDictionary *oneLoan = latestLoans[3]; 
    NSLog(@"loans[3]: %@ \n\n\n\n", oneLoan); 

    NSLog(@"...name: %@ \n\n\n\n", [oneLoan objectForKey:@"name"]); 
    NSLog(@"...sector: %@ \n\n\n\n", [oneLoan objectForKey:@"sector"]); 
    }