欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#中使用Newtonsoft.Json(Json.NET)的创建Json文件和解析

程序员文章站 2024-01-20 12:57:22
...

一、添加引用

using Newtonsoft.Json;

二、调用代码

//获取图书列表
List<BookInfo> bookList = GetBookList();

//将图书列表转换成Json          
string bookListJson = JsonConvert.SerializeObject(bookList);

//将Json转换回图书列表
List<BookInfo> books = JsonConvert.DeserializeObject<List<BookInfo>>(bookListJson);

三、将对象保存为.json文件到本地、解析本地.json文件为对象

            //获取图书列表
            List<BookInfo> bookList = GetBookList();

            //将图书列表转换成Json          
            string bookListJson = JsonConvert.SerializeObject(bookList);

            Console.WriteLine(bookListJson);

            writeJsonFile(@"e:\booklist.json", bookListJson);

            //将序列化的json字符串内容写入Json文件,并且保存
            void writeJsonFile(string path, string jsonConents)
            {
                using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite))
                {
                    using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
                    {
                        sw.WriteLine(jsonConents);
                    }
                }
            }



            //将Json转换回图书列表
            string jsonData = GetJsonFile(@"e:\booklist.json");
            Console.WriteLine(jsonData);

            //获取到本地的Json文件并且解析返回对应的json字符串
            string GetJsonFile(string filepath)
            {
                string json = string.Empty;
                using (FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite))
                {
                    using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
                    {
                        json = sr.ReadToEnd().ToString();
                    }
                }
                return json;

            }
            //反序列化Json字符串内容为图书对象
            List<BookInfo> books = JsonConvert.DeserializeObject<List<BookInfo>>(jsonData);

            foreach (var item in books)
            {
                Console.WriteLine("图书ID="+item.BookId);
                Console.WriteLine("图书标题=" + item.Title);
                Console.WriteLine("图书类别=" + item.Category);
                Console.WriteLine("图书作者" + item.Author);
                Console.WriteLine("出版日期=" + item.PublishDate);
                Console.WriteLine("销售价格=" + item.Price);
            }

效果图:

C#中使用Newtonsoft.Json(Json.NET)的创建Json文件和解析

C#中使用Newtonsoft.Json(Json.NET)的创建Json文件和解析

四、其他代码:


/// <summary>  
/// 图书信息实体类  
/// </summary>  
public class BookInfo
{

    public int BookId { set; get; }             //图书ID  

    public string Title { set; get; }           //图书名称  

    public string Category { set; get; }        //图书分类  

    public string Author { set; get; }          //图书作者  

    public DateTime PublishDate { set; get; }   //出版时间  

    public Double Price { set; get; }           //销售价格  

} 

/// <summary>  
/// 获取图书列表  
/// </summary>  
/// <returns></returns>  
public List<BookInfo> GetBookList()
{
    List<BookInfo> bookList = new List<BookInfo>();

    BookInfo book1 = new BookInfo()
    {
        BookId = 1,
        Category = "CHILDREN",
        Title = "Harry Potter",
        Author = "J K. Rowling",
        PublishDate = new DateTime(2005, 08, 15),
        Price = 29.99
    };
    bookList.Add(book1);

    BookInfo book2 = new BookInfo()
    {
        BookId = 2,
        Category = "WEB",
        Title = "Learning XML",
        Author = "Erik T. Ray",
        PublishDate = new DateTime(2003, 10, 18),
        Price = 39.95
    };
    bookList.Add(book2);

    return bookList;
}

 

补充:如果某个字段不想被Json序列化,则可以在该字段上加上[Newtonsoft.Json.JsonIgnore]特性。

例如上述实例中的价格不想被Json序列化:


[Newtonsoft.Json.JsonIgnore]

public Double Price { set; get; }           //销售价格 

注意:本内容来自:C#中Newtonsoft.Json(Json.NET)的使用

                                C# 利用Newtonsoft.Json 序列化生成Json数据

                                [C#] 利用LitJson进行Json文件的创建和读取