将NSString转换为正确的JSON格式

时间:2015-10-04 17:31:40

标签: ios objective-c json nsstring

NSString转换为正确的JSON格式..

NSString *input_json = [NSString stringWithFormat:@"{\"id\":\"%@\",\"seconds\":\"%d\",\"buttons\": \"%@\"}", reco_id, interactionTime, json_Buttons];

此处json_Button采用从nsdictionary转换而来的json格式。

我的input_json结果是:

{"id":"119","seconds":"10","buttons": "{
  "update" : "2",
  "scan" : "4"
}"}

它不是正确的JSON格式。键按钮包含“{}”我想删除这些引号。

预期结果是:

{
    "id": "119",
    "seconds": "10",
    "buttons": {
        "update": "2",
        "scan": "4"
    }
}

2 个答案:

答案 0 :(得分:2)

你说这一切都错了。首先,创建一个NSDictionary,其中包含您要转换为JSON的所有数据。然后使用NSJSONSerialization将字典正确转换为JSON。

这样的事情会起作用:

NSDictionary *dictionary = @{ @"id" : reco_id, @"seconds" : @(interactionTime), @"buttons" : json_Buttons };
NSError *error = nil;
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
if (data) {
    NSString *jsonString = [[NSString alloc] intWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"JSON: %@", jsonString);
} else {
    NSLog(@"Unable to convert dictionary to JSON: %@", error);
}

答案 1 :(得分:0)

尝试手动构建JSON字符串是个坏主意。使用NSJSONSerialization类。这很容易。创建字典,然后调用dataWithJSONObject:options:error:

如果你使用选项:NSJSONWritingPrettyPrinted它会插入换行符和空格,使JSON更具可读性。

通过使用该功能,您每次都可以获得格式正确的JSON,并且它非常灵活,因为如果您将其发送到不同的字典,您将获得不同的JSON。