C#中使用Newtonsoft.Json(Json.NET)的创建Json文件和解析
发布日期:2021-05-10 09:24:51 浏览次数:20 分类:精选文章

本文共 2033 字,大约阅读时间需要 6 分钟。

一、添加引用

在C#项目中,要使用Newtonsoft.Json库,需要先引入相应的命名空间: using Newtonsoft.Json;

二、调用代码

1. 获取并序列化图书列表

调用GetBookList方法获取图书列表,将其序列化为Json格式:

var bookList = GetBookList();
string bookListJson = JsonConvert.SerializeObject(bookList);

2. 保存Json到本地文件

将序列化后的Json字符串写入本地文件中:

using (FileStream fs = new FileStream(@"e:\booklist.json", FileMode.CreateNew, FileAccess.Write)) {
using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8)) {
sw.WriteLine(bookListJson);
}
}

3. 读取并解析Json文件

从本地文件中读取Json内容并反序列化为图书列表:

string jsonData = GetJsonFile(@"e:\booklist.json");
var books = JsonConvert.DeserializeObject
>(jsonData);
foreach (var book in books) {
Console.WriteLine("图书ID=" + book.BookId);
Console.WriteLine("图书标题=" + book.Title);
Console.WriteLine("图书类别=" + book.Category);
Console.WriteLine("图书作者=" + book.Author);
Console.WriteLine("出版日期=" + book.PublishDate);
Console.WriteLine("销售价格=" + book.Price);
}

三、其他代码

1. 图书信息实体类

public class BookInfo {
public int BookId { get; set; }
public string Title { get; set; }
public string Category { get; set; }
public string Author { get; set; }
public DateTime PublishDate { get; set; }
[Newtonsoft.Json.JsonIgnore]
public double Price { get; set; }
}

2. 获取图书列表

public List
GetBookList() {
return new List
{
new BookInfo {
BookId = 1,
Title = "Harry Potter",
Category = "CHILDREN",
Author = "J K. Rowling",
PublishDate = new DateTime(2005, 8, 15),
Price = 29.99
},
new BookInfo {
BookId = 2,
Title = "Learning XML",
Category = "WEB",
Author = "Erik T. Ray",
PublishDate = new DateTime(2003, 10, 18),
Price = 39.95
}
};
}

四、注意事项

  • 为某些字段加上Newtonsoft.Json.JsonIgnore特性,防止序列化时间字段或不需要的信息。
  • 在处理文件操作时,确保路径存在,文件权限足够。
  • 如果需要优化序列化性能,可以考虑Newtonsoft.Json的高效配置。
  • 通过以上步骤,可以实现图书数据的Json序列化和反序列化,以及本地文件的读写操作。这套解决方案适用于需要持久化存储和跨平台数据传输的场景。

    上一篇:C#实现每天创建日志文件
    下一篇:C#序列化与反序列化

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年04月17日 21时13分18秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章