如何删除“;(“来自swift中的jsonObject?
有一个字典由以下代码格式化为JSONObject:如何删除“;(“来自swift中的jsonObject?,swift,nsdictionary,nsjsonserialization,Swift,Nsdictionary,Nsjsonserialization,有一个字典由以下代码格式化为JSONObject: json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) as! NSDictionary 资料 我正在尝试用标签输出数据 label.text = "\(json.valueForKeyPath("results.definition")!)" 但输出如下所示: ( "(sometimes followed b
json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())
as! NSDictionary
资料
我正在尝试用标签输出数据
label.text = "\(json.valueForKeyPath("results.definition")!)"
但输出如下所示:
(
"(sometimes followed by `to') causing harm or injury"
)
"results": [
{
"definition": "first definition",
},
{
"definition": "second definition",
}
],
我的问题是,让输出只显示文本而不显示“()”的最佳方法是什么
是将json数据转换为NSString并将其拆分的唯一方法吗?我希望有更好的方法(如果可能)不要使用字符串操作来删除括号!首先获取正确的字符串 问题在于JSON中的
results
包含多个结果的数组:
"results": [ ... ]
当valueForKeyPath
遇到一个数组时,它会将键路径的其余部分(在您的示例中为definition
)应用于数组中的每个项,并返回另一个包含所有结果的数组
将数组转换为字符串时,数组中的项周围会出现(
)
。(字符串周围有引号,每个项之间有逗号。您可能也不需要这些。)
因此,如果您的JSON有多个结果,如下所示:
(
"(sometimes followed by `to') causing harm or injury"
)
"results": [
{
"definition": "first definition",
},
{
"definition": "second definition",
}
],
标签中的文字应为:
(
"first definition",
"second definition"
)
要解决此问题,请仅提取实际需要的结果
数组中的单个项。遗憾的是,valueForKeyPath
无法执行此操作(请参阅)。无论如何,最好检查JSON在每个级别的结构,而不是假设已按预期的格式传递数据
if let json = (try? NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())) as? NSDictionary,
results = json["results"] as? NSArray,
firstResult = results.firstObject as? NSDictionary,
definition = firstResult["definition"] as? String {
label.text = definition
}
不要使用字符串操作来删除括号!首先获取正确的字符串 问题在于JSON中的
results
包含多个结果的数组:
"results": [ ... ]
当valueForKeyPath
遇到一个数组时,它会将键路径的其余部分(在您的示例中为definition
)应用于数组中的每个项,并返回另一个包含所有结果的数组
将数组转换为字符串时,数组中的项周围会出现(
)
。(字符串周围有引号,每个项之间有逗号。您可能也不需要这些。)
因此,如果您的JSON有多个结果,如下所示:
(
"(sometimes followed by `to') causing harm or injury"
)
"results": [
{
"definition": "first definition",
},
{
"definition": "second definition",
}
],
标签中的文字应为:
(
"first definition",
"second definition"
)
要解决此问题,请仅提取实际需要的结果
数组中的单个项。遗憾的是,valueForKeyPath
无法执行此操作(请参阅)。无论如何,最好检查JSON在每个级别的结构,而不是假设已按预期的格式传递数据
if let json = (try? NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())) as? NSDictionary,
results = json["results"] as? NSArray,
firstResult = results.firstObject as? NSDictionary,
definition = firstResult["definition"] as? String {
label.text = definition
}
可能的重复可能的重复