将对象转换为json格式 - iOS

时间:2013-10-24 15:01:01

标签: ios json

您好我正在尝试将我的本地数据转换为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格式,如本例所示。

我感谢任何帮助。

3 个答案:

答案 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解析器中:

JSON PARSER PAGE

您可以看到基础结构:

具有4个键/值对的词典,带有键:“Answers”,“last_name”,“first_name”和“survey_id”。键的所有值都是基元,字符串或数字,除了第一个“答案”,其值是一个子词典数组,都带有键:“question_id”,“answer”和“question_instance_id”