将KeyValuePairs <String:String>转换为JSON

时间:2019-06-12 02:34:58

标签: ios json swift

我正在尝试将KeyValuePairs<String:String>转换为JSON,这是到目前为止我尝试过的操作,但由于KeyValuePairs而失败。

var userKeyValuePair: KeyValuePairs<String, String> {
    return ["FirstName": "NSDumb",
            "Address": "some address value",
            "Age": "30"]
}

我使用KeyValuePairs是因为我需要按顺序排列键值的顺序,而不是无序,所以我尝试使用以下代码将以上内容转换为JSON

let serializedData = try! JSONSerialization.data(withJSONObject: userKeyValuePair, options: [])
        let encodedData = String(data: serializedData, encoding: String.Encoding.utf8)

但是上面的代码引发了运行时错误,并抱怨JSON值无效。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (__SwiftValue)'

如果我在上面使用字典对JSONObject进行序列化,则可以正常工作,但不能与KeyValuePairs一起使用,我首先想到也许应该创建自己的类型来实现Sequence协议,但是在走那条路线之前,我想知道是否有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我试图绕过它,但无法找到一种方法将KeyValuePairs<String, String>转换为字典,因此我最终使用了字典并更改了代码流以实现我想要的目标

如果您的需求需要一本有序的词典,那么我确实遇到了good library which you may want to have a look at,但最后我还是用词典来完成工作的。

考虑到这一点,在任何情况下都不需要对字典进行排序,因为字典的整个思想是只存储可散列的键值对,因此最后我调整了解决该情况并取得预期结果的逻辑。