如何将JSON字符串转换为NSArray

时间:2016-05-24 15:37:21

标签: ios

以下是我从服务器获得的回复:

{
    result = {
        blankfill = "[[1, [u'32354'], False, 7]]";
        choice = "[[13, [3], False, 11], [10, [0], False, 3], [9, [1], False, 3], [2, [2], False, 4], [3, [1], False, 3], [1, [2], False, 3]]";
        spendTime = 26;
    };
    retcode = 0;
    subjectid = 1;
    submittime = "2016-05-24T15:21:50.784"; 
}

choice是我要转换为NSArray的字符串,它还包含嵌套数组。

这是我尝试过的代码:

 NSString *jsonString = [responseObject[@"result"] objectForKey:@"choice"];
 NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
 NSArray *arr = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 

目前,arr始终为零。

1 个答案:

答案 0 :(得分:1)

您需要在字符串中的任何位置将False更改为false。然后它将解析为JSON。

(看起来服务器端可能出现了问题。假设这应该是一个JSON数组,并且由于这个大写错误,它会以字符串形式到达。)

NSString* s = @"[[13, [3], false, 11], [10, [0], false, 3], [9, [1], false, 3], [2, [2], false, 4], [3, [1], false, 3], [1, [2], false, 3]]";
NSData *data = [s dataUsingEncoding:NSUTF8StringEncoding];
NSError* err;
NSArray *arr = [NSJSONSerialization JSONObjectWithData:data options:0 error:&err];
NSLog(@"%@", arr);

日志:

(
        (
        13,
                (
            3
        ),
        0,
        11
    ),
        (
        10,
                (
            0
        ),
        0,
        3
    ),
        (
        9,
                (
            1
        ),
        0,
        3
    ),
        (
        2,
                (
            2
        ),
        0,
        4
    ),
        (
        3,
                (
            1
        ),
        0,
        3
    ),
        (
        1,
                (
            2
        ),
        0,
        3
    )
)