如何快速从jsonObject中删除“(”?
Posted
技术标签:
【中文标题】如何快速从jsonObject中删除“(”?【英文标题】:How to remove "(" from a jsonObject in swift? 【发布时间】:2016-05-22 05:56:10 【问题描述】:有一个字典被以下代码格式化为 JSONObject:
json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())
as! NSDictionary
数据
"word": "detrimental",
"results": [
"definition": "(sometimes followed by `to') causing harm or injury",
"partOfSpeech": "adjective",
"synonyms": [
"damaging",
"prejudicial",
"prejudicious"
],
"similarTo": [
"harmful"
],
"derivation": [
"detriment"
]
],
"syllables":
"count": 4,
"list": [
"det",
"ri",
"men",
"tal"
]
,
"pronunciation":
"all": ",dɛtrə'mɛntəl"
,
"frequency": 2.77
我正在尝试输出带有标签的数据
label.text = "\(json.valueForKeyPath("results.definition")!)"
但输出看起来像这样:
(
"(sometimes followed by `to') causing harm or injury"
)
我的问题是使输出仅显示没有“()”的文本的最佳方法是什么?
是将json数据转换为NSString并拆分它的唯一方法吗?如果可能的话,我希望有更好的方法
【问题讨论】:
Remove characters from NSString?的可能重复 【参考方案1】:不要使用字符串操作来删除括号!首先获取正确的字符串。
问题是您的 JSON 中的 results
包含多个结果的数组:
"results": [ ... ]
当valueForKeyPath
遇到一个数组时,它会将其余的键路径(在您的情况下为definition
)应用到数组中的每个项目,并返回另一个数组 包含所有结果。
当您将数组转换为字符串时,您会得到 (
)
包围数组中的项目。 (以及字符串周围的引号,以及每个项目之间的逗号。您可能也不想要这些。)
所以如果你的 JSON 有多个结果,像这样:
"results": [
"definition": "first definition",
,
"definition": "second definition",
],
标签中的文字是:
(
"first definition",
"second definition"
)
要解决此问题,请仅提取 results
数组中您真正需要的单个项目。很遗憾,您无法使用 valueForKeyPath
执行此操作(请参阅 this answer)。无论如何,您最好检查每个级别的 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
【讨论】:
以上是关于如何快速从jsonObject中删除“(”?的主要内容,如果未能解决你的问题,请参考以下文章