在目标c中将两个json合并为一个

时间:2016-09-08 10:07:50

标签: ios objective-c json

我有两个Json字符串,我想将它组合成一个字符串。

我已经尝试过这段代码,但输出的是showinw错误的输出,

代码:

NSString* json1 = [[NSString alloc] initWithData:jsonData1 encoding:NSUTF8StringEncoding];
NSString* json2 = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];

json1 = {"foo":"bar","bar":"foo","name":"craig"}
json2 = {"foo":"baz","bar":"fob","name":"george"}

NSArray *jsonArr = @[json1, json2];
NSLog(@"jsonArr %@",jsonArr);

输出:

(
    "{\n  \"foo\" : \"bar\",\n  \"bar\" : \"foo\",\n  \"name\" : \"craig\ \n}",
    "{\n  \"foo\" : \"baz\",\n  \"bar\" : \"fob\",\n  \"name\" : \"george\ \n}"
)

我在哪里弄错了? 请提供帮助和感谢

2 个答案:

答案 0 :(得分:0)

你无法直接将jason转换为String。如果jsonData1和jsonData2是字典,请执行以下操作,如果没有将它们转换为NSDictionary

NSString *jsonString=@"";
    NSString *key;
    for(key in [jsonData1 allKeys])
    {
        jsonString = [jsonString stringByAppendingFormat:@"%@=%@,",key,[jsonData1 objectForKey:key]];
    }

    for(key in [jsonData2 allKeys])
    {
        jsonString = [jsonString stringByAppendingFormat:@"%@=%@,",key,[jsonData2 objectForKey:key]];
    }
    jsonString = [jsonString substringToIndex:[jsonString length] - 1];

答案 1 :(得分:0)

假设您有两个代表两个词典的JSON字符串

NSString *json1 = @"{\"foo\":\"bar\",\"bar\":\"foo\",\"name\":\"craig\"}";
NSString *json2 = @"{\"foo\":\"baz\",\"bar\":\"fob\",\"name\":\"george\"}";

使JSON数组使用逗号分隔符连接字符串并将其包装在括号[]

NSString *resultJSONArrayString = [NSString stringWithFormat:@"[%@]", [@[json1, json2] componentsJoinedByString:@","]];
// [{"foo":"bar","bar":"foo","name":"craig"},{"foo":"baz","bar":"fob","name":"george"}]