【发布时间】:2017-05-26 12:26:10
【问题描述】:
无法通过JSONSerialization.data(withJSONObject:options:)将我的排序字典序列化为 JSON
序列化适用于未排序的字典,但使用已排序的应用程序会抛出描述错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (_SwiftValue)'
这是我的方法的样子:
func createJSONFile(){
// create path to json file
let fileManager = FileManager.default
let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
let documentDirectory = urls[0] as NSURL
guard let jsonURL = documentDirectory.appendingPathComponent("graphData") else {
print("Failed to create path to json file.")
return
}
print(jsonURL.absoluteString)
// creating a .json file in the Documents folder
if !fileManager.fileExists(atPath: jsonURL.absoluteString){
fileManager.createFile(atPath: jsonURL.absoluteString, contents: nil, attributes: nil)
print("file created")
}
do {
let unsortedDic = self.tempDictionaryForJsonFile
let sortedDic = unsortedDic.sorted(by: <)
let jsonData = try JSONSerialization.data(withJSONObject: sortedDic, options: .prettyPrinted)
print(jsonData)
try jsonData.write(to: jsonURL)
print(fileManager.fileExists(atPath: jsonURL.absoluteString))
let content = try String.init(contentsOf: jsonURL, encoding: .utf8)
print(content)
} catch {
print(error.localizedDescription)
}
}
有趣的是,在检查器中调试未排序的字典看起来像这样:unsorted dictionary 和排序看起来像这样 sorted dictionary
请帮忙解决这个问题。
【问题讨论】:
-
Dictionary没有任何订单。
标签: ios json swift dictionary foundation