gpt4 book ai didi

ios - 如何摆脱数组中的多组括号

转载 作者:行者123 更新时间:2023-11-29 10:55:53 24 4
gpt4 key购买 nike

我正在使用 RESTKit 为 JSON 做一些对象映射,我正在映射一个数组。我正在映射的 JSON 如下所示:"parameters":[{"parameter_value":["Smith"]}, {"parameter_value":[66211]}]

我得到的数组如下所示:

Parameter Value: (
(
Smith
),
(
66211
)
)

当我尝试通过以下代码将数组转换为字符串时:NSString *nameidvalue = [[parameterValueArray valueForKey:@"description"] componentsJoinedByString:@""]; 字符串 nameidvalue 变成这个:

 (
Smith
)(
66211
)

我究竟该如何去掉括号,剩下的就是 Smith, 66211

最佳答案

您询问是否要消除“括号组”,但考虑到底层结构是一系列嵌套集合(字典和数组),您可以通过从该结构中有效地折叠一两个级别来达到预期的效果。您可以使用 KVC collection operator 执行此操作, @unionOfArrays, 与 valueForKeyPath 结合使用.如果你真的想做一个字符串操作,我们可以这样做,但是编写呈现一个简单数组的代码似乎更合乎逻辑,然后你可以使用 componentsJoinedByString 如果你真的想要一个简单的字符串结束。

让这个答案有点复杂的是报告的 JSON 与结果 NSDictionaryNSLog 不匹配,所以我不清楚到底是什么输入是。因此,我将展示此 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
);
}

你问:

How exactly do I get rid of the parentheses so what I'm left with is Smith, 66211

如果您真的只是想要@"Smith, 66211",那么您可以只采用这个简化的数组,现在使用componentsJoinedByString:

NSString *string = [dictionary[@"parameters"] componentsJoinedByString:@", "];

关于ios - 如何摆脱数组中的多组括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com