14°

C# 使用Json.NET对数据进行序列化和反序列化

本文首发于个人博客https://kezunlin.me/post/22391aa3/,欢迎阅读最新内容!

c# json serialize and deserialize using json.net JsonConvert

<!--more-->

Guide

Json.NET

  • JsonConvert.SerializeObject
  • JsonConvert.DeserializeObject

install

Use NuGet to download the package

"Project" -> "Manage NuGet packages" -> "Search for "newtonsoft json". -> click "install".

code

reference

using Newtonsoft.Json;

serialize collections

Product p1 = new Product
{
    Name = "Product 1",
    Price = 99.95m,
    ExpiryDate = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc),
};
Product p2 = new Product
{
    Name = "Product 2",
    Price = 12.50m,
    ExpiryDate = new DateTime(2009, 7, 31, 0, 0, 0, DateTimeKind.Utc),
};

List<Product> products = new List<Product>(); products.Add(p1); products.Add(p2);

string json = JsonConvert.SerializeObject(products, Formatting.Indented); //[ // { // "Name": "Product 1", // "ExpiryDate": "2000-12-29T00:00:00Z", // "Price": 99.95, // "Sizes": null // }, // { // "Name": "Product 2", // "ExpiryDate": "2009-07-31T00:00:00Z", // "Price": 12.50, // "Sizes": null // } //]

deserialize collections

string json = @"[
  {
    'Name': 'Product 1',
    'ExpiryDate': '2000-12-29T00:00Z',
    'Price': 99.95,
    'Sizes': null
  },
  {
    'Name': 'Product 2',
    'ExpiryDate': '2009-07-31T00:00Z',
    'Price': 12.50,
    'Sizes': null
  }
]";

List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json);

Console.WriteLine(products.Count); // 2

Product p1 = products[0];

Console.WriteLine(p1.Name); // Product 1

serialize to json file

public class Movie
{
    public string Name { get; set; }
    public int Year { get; set; }
}

Movie movie = new Movie { Name = "Bad Boys", Year = 1995 };

// serialize JSON to a string and then write string to a file File.WriteAllText(@"c:\movie.json", JsonConvert.SerializeObject(movie));

// serialize JSON directly to a file using (StreamWriter file = File.CreateText(@"c:\movie.json")) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, movie); }

Reference

History

  • 20190910: created.

Copyright

本文由【kezunlin】发布于开源中国,原文链接:https://my.oschina.net/kezunlin/blog/3136815

全部评论: 0

    我有话说: