json.netjson.net入门


备注

[Json.NET] [1]是一种流行的.NET高性能JSON框架。它是一个.Net程序集,它公开了各种各样的类和方法,以帮助执行json数据的常见任务。

这包括能够执行诸如将json数据序列化为类实例,数据文件以及反序列化可能来自许多不同来源的json数据(如API端点或.json数据文件)的功能。

版本

发布日期
Json.NET 9.0.1(当前版本) 2016年6月22日
Json.NET 8.0.3 2016年3月14日
Json.NET 8.0.2 2016年1月9日
Json.NET 8.0.1 2015年12月29日
Json.NET 7.0.1 2015年6月22日
Json.NET 6.0.8 2015年1月11日
Json.NET 6.0.7 情节中字
Json.NET 6.0.6 2014年10月24日
Json.NET 6.0.5 2014年9月6日
Json.NET 6.0.4 2014年8月3日
Json.NET 6.0.3 2014-04-27
Json.NET 6.0.2 2014年3月30日
Json.NET 6.0.1 2014年2月1日
Json.NET 5.0.8 二〇一三年十月十七日
Json.NET 5.0.7 二零一三年十月十四日
Json.NET 5.0.6 2013年6月6日
Json.NET 5.0.5 2013年5月8日
Json.NET 5.0.4 2013年4月25日
Json.NET 5.0.3 2013年4月14日
Json.NET 5.0.2 2013年4月8日
Json.NET 5.0.1 2013年4月7日
Json.NET 4.5.11 二〇一二年十一月二十零日
Json.NET 4.5.10 2012年10月7日
Json.NET 4.5.9 2012年9月8日
Json.NET 4.5.8 2012-08-04
Json.NET 4.5.7 2012-06-09
Json.NET 4.5.6 2012-05-30
Json.NET 4.5.5 2012-05-08
Json.NET 4.5.4 2012-04-24
Json.NET 4.5.3 2012-04-13
Json.NET 4.5.2 2012-04-11
Json.NET 4.5.1 2012-03-20
Json.NET 4.0.8 2012-02-12
Json.NET 4.0.7 2012-01-24
Json.NET 4.0.6 2012-01-23
Json.NET 4.0.5 2011-12-10
Json.NET 4.0.4 2011-11-19
Json.NET 4.0.3 2011-10-02
Json.NET 4.0.2 2011-04-23
Json.NET 4.0.1 2011-04-22
Json.NET 3.5.8 2011-01-08

如何在C#中使用Json.Net将JSON数据反序列化为Object

以下示例显示如何反序列化包含到Object中的JSON字符串(即进入类的实例)。

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
                    
public class Program
{
    public class Employee
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public bool IsManager { get; set; }
        public DateTime JoinedDate { get; set; }
        public IList<string> Titles { get; set; }
    }
    
    public static void Main()
    {
        string json = @"{
                          'FirstName': 'Shiva',
                          'LastName': 'Kumar',
                          'IsManager': true,
                          'JoinedDate': '2014-02-10T00:00:00Z',
                          'Titles': [
                            'Sr. Software Engineer',
                            'Applications Architect'
                          ]
                        }";
        
        Employee employee = JsonConvert.DeserializeObject<Employee>(json);

        Console.WriteLine(employee.FirstName);
        Console.WriteLine(employee.LastName);
        Console.WriteLine(employee.JoinedDate);
        foreach (string title in employee.Titles)
        {
            Console.WriteLine("  {0}", title);    
        }
    }
}
 

如果运行此控制台程序,则各种Console.WriteLine 语句的输出将如下所示。

Shiva
Kumar
2/10/2014 12:00:00 AM
  Sr. Software Engineer
  Applications Architect
 

很少有事情需要注意

  1. 以下行将json字符串中的数据实际反序列化为Employee 类的employee 对象实例。

Employee employee = JsonConvert.DeserializeObject<Employee>(json);

  1. 由于employee.TitlesList<string> 类型,因此我们使用foreach 循环结构来遍历该List 每个项目。

如何在Visual Studio项目中安装Json.Net

您可以通过2种方式之一将Json.Net安装到Visual Studio Project中。

使用程序包管理器控制台安装Json.Net。

  1. 通过在“快速启动”框中键入包管理器控制台并选择它,在Visual Studio中打开“ 包管理器控制台”窗口

在此处输入图像描述

或单击查看 - > 其他Windows - > 程序包管理器控制台

  1. 显示程序包管理器控制台后,从“ 默认项目”下拉列表中选择要在其中安装Json.Net的解决方案中的项目

在此处输入图像描述

  1. 现在输入以下命令并按Enter键。

Install-Package Newtonsoft.Json

  1. 这将安装最新版本的Json.Net。您将在程序包管理器控制台中看到安装进度。如果成功,您将收到已成功安装到所选项目中的消息。

在此处输入图像描述

  1. 成功安装后,您现在可以在所选项目的参考中看到Json.Net程序集。 Json.Net程序集的名称是Newtonsoft.Json

在此处输入图像描述

Json.Net现在可以在您的项目中使用了!

使用Visual Studio Solution Explorer安装Json.Net。

您还可以使用Visual Studio中的解决方案资源管理器安装json.net。

  1. 右键单击Project中的References节点,然后单击Manage Nuget Packages ...

  2. Nuget Package Manager对话框中,确保在左窗格中选择Online 。在右上角的搜索框中键入Json.Net 。这将在中间的搜索结果窗格中显示Json.Net Nuget Package。

  3. 单击“ 安装”按钮。

在此处输入图像描述

  1. 您将在弹出的进度窗口中看到安装进度。

在此处输入图像描述

  1. 安装完成后,您将在Nuget Package Manager对话框中看到Json.Net包旁边的绿色复选标记。

在此处输入图像描述

  1. 您还将在解决方案资源管理器的“ 参考”节点中看到所选项目的Newtonsoft.Json 集。

在此处输入图像描述

这样就完成了Json.Net的安装。您现在可以在项目中使用它来对json数据执行各种操作。

如何在C#中使用Json.Net将对象序列化为JSON

以下示例显示如何使用Json.Net将C#Object实例中的数据序列化为JSON字符串。

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public class Employee
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public bool IsManager { get; set; }
    public DateTime JoinedDate { get; set; }
    public IList<string> Titles { get; set; }
}
                    
public class Program
{
    public static void Main()
    {
        Employee employee = new Employee
        {
            FirstName = "Shiva",
            LastName = "Kumar",            
            IsManager = true,
            JoinedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
            Titles = new List<string>
            {
                "Sr. Software Engineer",
                "Applications Architect"
            }
        };

        string json = JsonConvert.SerializeObject(employee, Formatting.Indented);


Console.WriteLine(json);
        
    }
}
 

如果运行此控制台程序,则Console.WriteLine(json) 的输出将为

{
  "FirstName": "Shiva",
  "LastName": "Kumar",
  "IsManager": true,
  "JoinedDate": "2013-01-20T00:00:00Z",
  "Titles": [
    "Sr. Software Engineer",
    "Applications Architect"
  ]
}
 

很少有事情需要注意

  1. 以下行将employee 类实例内的数据实际序列化为json字符串

    string json = JsonConvert.SerializeObject(employee, Formatting.Indented);

  2. 参数Formatting.Indented 告诉Json.Net使用缩进和新行序列化数据。如果不这样做,序列化字符串将是一个长字符串,没有缩进或换行符。