使用JSON将数据存储在文本文件中

时间:2015-04-11 00:48:26

标签: c# .net json

我需要在一些文本文件,客户和书籍中存储与库相关的一些数据。 我一直在搜索如何使用JSON将数据保存到文本文件中,但我无法理解代码或我应该调用的命名空间。

我正在寻找典型的JSON结构,如:

{
  "name": "John Doe",
  "address": "Street of whatever",
  "ID": 123456789,
  "telephone": 123443221,
  "gender": "M",
  "prefgenres": {
    "adventure": true,
    "romance": false,
    "police": true,
    "scifi": false
  }
}

2 个答案:

答案 0 :(得分:3)

尝试JSON.Net,使用起来非常简单。

为了简化您的研究,如果您只想序列化一个简单的对象,您可以这样做:

using System.IO;
using Newtonsoft.Json;

namespace test
{
    public void writeObject( object myObj){ 
        using (StreamWriter myFile = new StreamWriter(myPath))
        { 
            newFile.WriteLine(JsonConvert.SerializeObject(myObj));
        }   
    }
}

要反序列化您的数据,您可以使用:

using System.IO;
using Newtonsoft.Json;

namespace test
{
    public MyObject readObject(){
        var result;  
        using (StreamReader file = new StreamReader(myPath))
        { 
            result = JsonConvert.DeserializeObject<MyObject>(file.ReadToEnd());
            file.Close();
        }   
        return result;
    }
} //Notice that "MyObject" could be even a collection of your objects, like List<Customer> and you can deserialize all in once.

答案 1 :(得分:0)

你的模特

[Serializable]
class Contact
{
    public string name { get; set; }
    public string address { get; set; }
    public Contact()
    {

    }
}

保存方法

    internal static class Source
    {
        internal static bool Save<T>(T data, string saveFilePath)
        {
            var ser = new XmlSerializer(typeof(T));
            using (var sw = new StreamWriter(saveFilePath, false, Encoding.UTF8))
            {
                using (var usw = new Utf8StringWriter())
                {
                    ser.Serialize(usw, data);
                    sw.Write(usw.ToString());
                }
            }
            return true;
        }
    }

调用保存方法

Source.Save(contactmodel, "contact.txt");