【问题标题】:Converting JArray to String to be Written Into JSON file将 JArray 转换为要写入 JSON 文件的字符串
【发布时间】:2013-11-19 01:00:03
【问题描述】:

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

我在这里错过了什么?

【问题讨论】:

    标签: android json json.net xamarin


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      甚至比流更简单,如果您仍然要读取和写入整个文件,那么您可以使用File.ReadAllText()File.WriteAllText()

      阅读:

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

      写作:

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

      【讨论】:

      • 以上是正确的答案,但这个解决方案更好。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多