你問到消除「套括號」,但考慮到底層結構是一系列嵌套集合(字典和數組),可以通過有效地摺疊一個達到預期的效果一級或兩級從該結構。您可以使用KVC collection operator,@unionOfArrays
與valueForKeyPath
一起使用。如果你真的想做一個字符串操作,我們可以做到這一點,但它似乎更符合邏輯寫呈現一個簡單的數組的代碼,然後你可以使用componentsJoinedByString
如果你真的想在最後一個簡單的字符串。
是什麼讓這個答案有點複雜的是,報告的JSON與NSDictionary
的NSLog
不匹配,所以我不清楚輸入是什麼。所以我要告訴這個KVC收集運營商,一個是所提供的樣品JSON匹配的兩個置換,另一個,我從您報告的NSDictionary
結構推斷的JSON相匹配。
如果JSON是:
{"parameters":[{"parameter_value":["Smith"]}, {"parameter_value":[66211]}]}
然後,您可以解析如下(我使用的是NSJSONReadingMutableContainers
,這樣我可以改變的結果;如果你不試圖改變陣列,而只是提取相應的結果,那麼你就需要使它易變,它是由你):
NSMutableDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error:&error];
這將產生一個NSMutableDictionary
結構將是:
{
parameters = (
{
"parameter_value" = (
Smith
);
},
{
"parameter_value" = (
66211
);
}
);
}
但你可以取代parameters
有:
dictionary[@"parameters"] = [dictionary[@"parameters"] valueForKeyPath:@"@unionOfArrays.parameter_value"];
產量:
{
parameters = (
Smith,
66211
);
}
但是,如果你有喜歡的JSON:
{"parameters":[["Smith"],[66211]]}
如果您解析了與上述同樣的NSJSONSerialization
,這將產生像一本字典:
{
parameters = (
(
Smith
),
(
66211
)
);
}
而且你可以取代使用KVC收集操作@unionOfArrays
再次參數值,此時使用self
:
dictionary[@"parameters"] = [dictionary[@"parameters"] valueForKeyPath:@"@unionOfArrays.self"];
這將產生:
{
parameters = (
Smith,
66211
);
}
你問:
究竟如何擺脫括號我留下那麼,什麼是與史密斯,66211
如果,從字面上看,就是想@"Smith, 66211"
,然後你可以只是藉此簡化陣列和現在使用componentsJoinedByString
:
NSString *string = [dictionary[@"parameters"] componentsJoinedByString:@", "];
您是如何創建您正在打印的陣列的?它看起來不像第一段代碼片段中的那個,所以我假設你正在以某種方式編輯它。我們可以看到這些代碼嗎? – Jsdodgers