因此,我在设备中有一个JSON文件可供读取和写入。我在Xamarin Android上使用JSON.NET。我从文件中读取如下:
FileStream jsonfile = new FileStream(root + "/data.json", FileMode.Open);
string content;
using (StreamReader sr = new StreamReader (jsonfile))
content = sr.ReadToEnd ();
var objects = JArray.Parse (content);
这样,我就不会为JSON对象创建一个类。它会自动解析为JArray对象。然后,我可以轻松直接地读取数据,比如:
foreach (JObject obj in objects) {
Console.WriteLine(obj.Property("name").Value.ToString());
}
但是当涉及到将数据写入JSON文件时。正如我的逻辑所示,我向后尝试了这个过程:
using (StreamWriter sw = new StreamWriter (jsonfile))
sw.Write(JsonConvert.ToString(objects));
它就是不起作用。错误清楚地表明"无法写入流文件。"
我是个新手。所以我可能做错了什么。问题是,我将读取的数据非常简单(即使它是一个JArray),我正在尝试我能找到的最简单的方法。
我在这里错过了什么?
使用指定文件权限的FileStream重载并使用FileAccess.ReadWrite.
new FileStream(root + "/data.json", FileMode.Open, FileAccess.ReadWrite);
即使比流更简单,如果您无论如何都要读写整个文件,那么您只需要使用File.ReadAllText()
和File.WriteAllText()
。
阅读:
JArray objects = JArray.Parse(File.ReadAllText(root + "/data.json"));
写入:
File.WriteAllText(root + "/data.json", objects.ToString());