如何快速从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中删除“(”?的主要内容,如果未能解决你的问题,请参考以下文章

jsonObject和JsonArray转化String

如何从 JSONArray 中删除特定元素?

如何从 JSON 数组数据输出中删除大括号 []?

如何从其路径中获取 JSONObject 中的嵌套值?

如何从嵌套的 ArrayList 中获取 JSONObject 的属性并将其显示给 ListView?

springmvc返回数据库不为空的数据的方法(或JSONObject过滤null字段的方法)