我正在尝试将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
协议,但是在走那条路线之前,我想知道是否有更好的方法吗?
答案 0 :(得分:0)
我试图绕过它,但无法找到一种方法将KeyValuePairs<String, String>
转换为字典,因此我最终使用了字典并更改了代码流以实现我想要的目标
如果您的需求需要一本有序的词典,那么我确实遇到了good library which you may want to have a look at,但最后我还是用词典来完成工作的。
考虑到这一点,在任何情况下都不需要对字典进行排序,因为字典的整个思想是只存储可散列的键值对,因此最后我调整了解决该情况并取得预期结果的逻辑。