将JArray转换为要写入JSON文件的String

时间:2013-11-19 01:00:04

标签: android json json.net xamarin

所以,我在设备中有一个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),我正在尝试我能找到的最简单的方法。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

使用指定文件权限的FileStream重载并使用FileAccess.ReadWrite。

new FileStream(root + "/data.json", FileMode.Open, FileAccess.ReadWrite);

答案 1 :(得分:1)

甚至比溪流更简单,如果你打算读写整个文件,那么你可以使用File.ReadAllText()File.WriteAllText()

阅读:

JArray objects = JArray.Parse(File.ReadAllText(root + "/data.json"));

写:

File.WriteAllText(root + "/data.json", objects.ToString());