如何从Swift中的JSON获取密钥?

时间:2016-04-12 05:37:12

标签: ios json swift

我正在使用Swift进行JSON解析。

var results = [String:[AnyObject]]()

以上results的数据如下所示,

"fruit" = ( "apple", "orange" );

此处,数据在运行时动态附加。我只需要获取密钥并将其作为标题显示在表视图中。

如何在swift中从key获取results

5 个答案:

答案 0 :(得分:2)

NSJSONSerialization代码示例...

<div class="wrap-select">
      <select onchange="setLocation(this.value)">
           <option value="http://localhost/purcheasy/phones.html?dir=asc&amp;order=position" selected="selected">Position</option>
           <option value="http://localhost/purcheasy/phones.html?dir=asc&amp;order=name">Name</option>
           <option value="http://localhost/purcheasy/phones.html?dir=asc&amp;order=price">Price</option>
      </select>
</div>

答案 1 :(得分:1)

您可以将JSON转换为字典,如Birendra提出的上述链接中所述。然后假设jsonDict是你的json解析字典。然后,您可以使用jsonDict.keys收集所有密钥。

答案 2 :(得分:1)

我用过,

var results = [String:Array<DataModel>]

其中,

class DataModel {
    var name: String?     
}

并获取密钥和值,

for i in 0...(results.length-1){
    // To print the results keys
    print(results.keys[results.startIndex.advancedBy(i)])
    // To get value from that key
    let valueFromKeyCount = (results[results.keys[results.startIndex.advancedBy(i)]] as Array<DataModel>).count
    for j in 0...(valueFromKeyCount-1) {
         let dm = results[results.keys[results.startIndex.advancedBy(i)]][j] as DataModel
         print(dm.name) 
    }
}

答案 3 :(得分:0)

您需要使用NSJSONSerialization类以json格式转换(例如转换为字典),然后从中获取所有键。

答案 4 :(得分:0)

使用Swift 4.2进行测试以获取第一个键或键列表:

此“单线”将返回第一个键,如果只有一个,则仅返回键。

let firstKey: String = (
    try! JSONSerialization.jsonObject(
        with: data,
        options: .mutableContainers
    ) as! [String: Any]).first!.key

这将获得所有键的列表以及字符串数组。

let keys: [String] = [String] ((
    try! JSONSerialization.jsonObject(
        with: data,
        options: .mutableContainers
    ) as! [String: Any]).keys)

以上两个示例均按如下方式使用JSON对象

let data = """
    {
        "fruit" : ["apple","orange"],
        "furnature" : ["bench","chair"]
    }
    """.data(using: .utf8)!