2013-10-24 192 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"]); 
    }