如何删除“;(“来自swift中的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

有一个字典由以下代码格式化为JSONObject:

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
}
可能的重复可能的重复