gpt4 book ai didi

json - 可以不存档的情况下保存json数据吗

转载 作者:行者123 更新时间:2023-11-30 10:13:32 26 4
gpt4 key购买 nike

我想将 json 数据保存到文件中而不进行存档。这样我就可以打开文件并检查一切是否正常

// valid json data
if NSJSONSerialization.isValidJSONObject(jsonData) {

let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
let documentsDirectory = paths[0] as! String
let path = documentsDirectory.stringByAppendingPathComponent("test.json")
println(path) // if I open the file from finder, all the data is archived


// try 1: the jsonData is archived
if NSKeyedArchiver.archiveRootObject(jsonData, toFile: path) {
println("saved: true");
}

let stringTest = "asd"
stringTest.writeToFile(path, atomically: true, encoding: NSStringEncoding.allZeros, error: nil)
// the string is also archived

}

我也试试

var jsonNSData = NSKeyedArchiver.archivedDataWithRootObject(jsonData)
var string = NSString(data: jsonNSData, encoding: NSUTF8StringEncoding)
println(string) // returns nil

最佳答案

您可以通过将 JSON 转换为 NSDictionary 来完成此操作,然后将其写入用户文档目录:

var someJsonAsDict: [String: AnyObject] = ["foo": "string", "bar": NSNumber(integer: 5)]

if let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) as? [String],
let documentsDirectory = paths.first
{
let filePath = documentsDirectory.stringByAppendingPathComponent("myPlistFile")
let fileManager = NSFileManager.defaultManager()

//IMPORTANT - someJsonAsDict cannot have primite types(they must be boxed in Appropriate NSNumber, NSValue, etc)
(someJsonAsDict as NSDictionary).writeToFile(filePath, atomically: true)

//print path of simulator so you can read it from terminal
println("target path is \(filePath)")
}

如果您碰巧将 Array 作为 JSON 的最外层对象,只需替换:

someJsonAsDict as NSDictionary

使用适当的数组方法:

someJsonAsDict as NSArray

所有这些都将使用 JSON 创建 plist 文件。如果您碰巧需要原始 json 样式(如 txt),您可以使用 plutil(与 Xcode 命令行工具一起安装):

plutil -convert json myPlistFile.plist -o MyTxtFile.json

关于json - 可以不存档的情况下保存json数据吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31532074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com