您好我正在尝试将我的本地数据转换为iOS上的json格式。 格式如下,
{
"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 :(得分:1)
您需要使用NSJSONSerialization
来完成此操作,您需要的内容将自动完成。另请查看this链接。
感谢
这是链接的wonderlich教程的30秒摘要,它可能对某人有所帮助。欢呼声。
你需要了解的关于json的所有内容,它甚至不会在SO上滚动:)
#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"] );
}
答案 1 :(得分:0)
简单地:
NSDictionary *entireJson = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSDictionary
内的逻辑与您的JSON相同。对于你的答案,你可以这样:
NSArray *answersArray = entireJSon[@"answers"];
快速注意,确保你的json有效(在这种情况下是......)
答案 2 :(得分:0)
如果您熟悉iOS数组和词典,那么您可以直观地了解它们与JSON的关系。 JSON只是数组和字典的编码,因此如果您将数据匹配到与您拥有的数据相关的结构中,则JSON编码将是相同的。
如果将上面的JSON粘贴到像这样的JSON解析器中:
您可以看到基础结构:
具有4个键/值对的词典,带有键:“Answers”,“last_name”,“first_name”和“survey_id”。键的所有值都是基元,字符串或数字,除了第一个“答案”,其值是一个子词典数组,都带有键:“question_id”,“answer”和“question_instance_id”