如何使用 NSMutableDictionary 导出 .JSON 文件?
Posted
技术标签:
【中文标题】如何使用 NSMutableDictionary 导出 .JSON 文件?【英文标题】:How to export .JSON file using NSMutableDictionary? 【发布时间】:2016-05-13 14:36:42 【问题描述】:我有 NSMutableDictionary 里面这个值是这样存在的
0 =
imageangle = "0.09630692";
imageheight = "129.0245";
imagepath = "assets-library://asset/asset.PNG?id=BD849AC4-EDF2-4E05-B5F8-F5EE34385A97&ext=PNG";
imagescalex = "85.48777";
imagescaley = "85.48777";
imagewidth = "129.0245";
mainheight = 282;
mainwidth = 316;
;
memes =
alpha = 1;
alphaFont = 1;
blue = 1;
blueFont = 0;
green = 1;
greenFont = "0.5";
memestext = "Kishore kumar kumar ";
red = 0;
redFont = 1;
textheight = 34;
textscalex = 13;
textscaley = "30.5";
textwidth = 316;
;
使用这个我喜欢将这个字典导出到 .json 文件中。
之后我将转换为 JSONSTRING:
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dickeyjson options:NSJSONWritingPrettyPrinted error:&error];
NSString* aStr;
aStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
我的问题:
是否可以将其导出为 .json 并将其存储到本地存储中?
【问题讨论】:
你为什么没有尝试导出它? 你为什么挣扎,你有没有尝试使用NSJSONSerialization
?
将Dictionary
转换为json string
,然后将string
保存为file
。
如果你打算将它存储在本地,为什么还要使用 JSON 呢?只需将字典直接写入文件即可。 NSDictionary
内置了直接读写文件的方法。不需要 JSON。
请不要在主站点上使用单词作为兄弟。这不是一些社交聊天网站。另一件事是您没有显示您所面临的确切问题,以便可以帮助您。只是写我正在苦苦挣扎的陈述表明你的努力很差
【参考方案1】:
您当然可以将字符串导出到 .json 文件,这将是正确错误处理方式的概述:
do
let jsonString = "\"what\":\"ever\""
let jsonFile = "file.json"
guard let docs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first else
throw NSError(domain: "what-no-Documents-folder??", code: 1, userInfo: nil)
let path = NSURL(fileURLWithPath: docs).URLByAppendingPathComponent(jsonFile)
try text.writeToURL(path, atomically: false, encoding: NSUTF8StringEncoding)
catch
fatalError("Writing failed!")
然后再读一遍,
do
let path = NSURL(fileURLWithPath: "same as for writing")
let jsonString = try NSString(contentsOfURL: path, encoding: NSUTF8StringEncoding)
catch
fatalError("Reading failed!")
但是,您可能希望在阅读时将此 JSON 放回字典中,是吗?在这种情况下,无需转换为 JSON,您应该直接使用NSDictionary's writeToURL method,使用与上述相同的轮廓;因为我不相信有任何 JSON 表示的对象不符合 NSCoder,因此可以使用 writeToFile
/writeToURL
归档。
【讨论】:
【参考方案2】:究竟是什么问题?使用 NSJSONSerialization 将字典转换为 NSData。然后使用 writeToFile: 或 writeToURL: 的变体将 NSData 写入文件,没有理由通过 NSString,这只是浪费时间、内存和电池寿命。
要读取数据,请使用 dataWithContentsOfFile 或 dataWithContentsOfURL,然后再次使用 NSJSONSerialization。如果您使用映射文件,则 NSData 甚至不使用内存;如果您的数据是多兆字节,这将很有用。
【讨论】:
以上是关于如何使用 NSMutableDictionary 导出 .JSON 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NSMutableDictionary 连接 Tableview 和 View Controller?
如何使用键将对象添加到 NSMutableDictionary?
如何将 NSArray 添加为 NSMutableDictionary 的 NSMutableDictionary 键?