我正在尝试转换 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
协议(protocol),但在我走这条路线之前,我想知道是否有更好的方法来做到这一点?
最佳答案
我试图旋转我的头,但无法找到一种方法来获取 KeyValuePairs<String, String>
转换为字典,因此我最终使用字典并更改了我的代码流程以实现我想要做的事情。
如果您的要求需要您有一本有序的字典,那么我确实遇到了 good library which you may want to have a look at但最终我还是用字典来完成我的工作。
当我想到这一点时,不会有任何情况需要对字典进行排序,因为字典的整个想法就是只存储可哈希的键值对集,所以最后我调整了我的逻辑来解决这种情况并达到预期的结果。
关于ios - 转换键值对<字符串:String> to JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56553920/