C#操作 JSON方法汇总

RestAPI中, 经常需要操作json字符串,  需要把json字符串"反序列化"成一个对象, 也需要把一个对象"序列化"成一字符串。

C# 操作json,  比较简单。  本文介绍几种方法

步骤

Json 字符串 反序列化成对象 共需要2步:

第一步:建立相应的实体类

第二步: 调用方法把Json字符串"反序列化"成对象

了解json的语法

首先要了解json的语法,这样才能知道怎么创建实体类.

Json 的语法很简单, 就四条

数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组

创建实体类的例子

{"FirstName":"小坦克","LastName":"Tank","Age":30}
相应的实体类可以为

  public class Person
  {
    public String FirstName
    { get; set; }

    public String LastName
    { get; set; }

    public int Age
    { get; set; }
  }

自动生成JSON的实体类

一个复杂的实体类,我们自己去写的话,可能需要1个小时以上。 那有没有工具能直接生成实体类呢,这样能方便太多了。  当然有

http://jsonclassgenerator.codeplex.com/  ----开源的winform工具。

使用第三方工具 Newtonsoft.Json.dll

优点:  使用非常方便.   看个例子就知道怎么用了

下载地址   http://www.jb51.net/dll/Newtonsoft.Json.dll.html

代码示例:

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

namespace JsonDemo
{
  class Program
  {
    static void Main(string[] args)
    {
      string personJson = "{ 'FirstName': '小坦克','LastName':'Tank xiao', 'Age':'30', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]}";

      string allMoveJson = @"[{ 'FirstName': '小坦克','LastName':'Tank xiao', 'Age':'30', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]},{
               'FirstName': '小坦克2','LastName':'Tank xiao2', 'Age':'40', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]}]";

      // 反序列化 单个对象
      Person oneMovie = JsonConvert.DeserializeObject<Person>(personJson);

      // 反序列化 对象集合
      List<Person> allMovie = JsonConvert.DeserializeObject<List<Person>>(allMoveJson);

      Console.WriteLine(oneMovie.FirstName);
      Console.WriteLine(allMovie[1].FirstName);

      // 序列化
      string afterJson = JsonConvert.SerializeObject(allMovie);
    }
  }

  public class Person
  {
    public String FirstName
    { get; set; }

    public String LastName
    { get; set; }

    public int Age
    { get; set; }

    public List<Book> Books
    { get; set; }
  }

  public class Book
  {
    public string BookName
    { get; set; }

    public string Price
    { get; set; }
  }
}

最后我们来看个实例

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

namespace TestJson
{
  class Program
  {
    static void Main(string[] args)
    {

      string json = "{\"a\":\"sadsad\",\"c\":{\"d\":\"adad\"}}";

      //CCC ccc = new CCC();
      //ccc.d = "adad";

      //AAA aaa = new AAA();
      //aaa.a = "sadsad";
      //aaa.b = "dfgdg";
      //aaa.c = ccc;

      AAA aaa = new AAA();

      aaa= JavaScriptConvert.DeserializeObject<AAA>(json);

      // string json = JavaScriptConvert.SerializeObject(aaa);

      // Console.WriteLine(json);

      Console.Read();

    }
  }

  public class AAA {

    private string m_a;
    public string a
    {
      get { return m_a; }
      set { m_a = value; }
    }

    private string m_b;
    public string b
    {
      get { return m_b; }
      set { m_b = value; }
    }

    private CCC m_c;
    public CCC c
    {
      get { return m_c; }
      set { m_c = value; }
    }
  }
  public class CCC
  {
    private string m_d;
    public string d
    {
      get { return m_d; }
      set { m_d = value; }
    }
  }

}
(0)

相关推荐

  • C#实现的json序列化和反序列化代码实例

    using System; using System.Collections.Generic; using System.Web.Script.Serialization; using System.Configuration; using System.Runtime.Serialization.Json; using System.Runtime.Serialization; using System.IO; using System.Text; namespace WebApplicati

  • C#实现Json转Unicode的方法

    本文实例讲述了C#实现Json转Unicode的方法.分享给大家供大家参考之用.具体方法如下: 本文实例主要实现输入为带有json格式的文本,输出正常文本的功能. 具体代码如下: private string JsonToUnicode(string input) { input = input.Replace("\\\"", "\""); input = input.Replace("\\/", "/")

  • C#中使用JSON.NET实现JSON、XML相互转换

    官方 JSON.NET 地址 http://james.newtonking.com/pages/json-net.aspx XML TO JSON string xml = @"<?xml version=""1.0"" standalone=""no""?> <root> <person id=""1""> <name>Ala

  • C#解析JSON实例

    本文以实例形式讲述了C#解析JSON的方法,C#封装了对XML和JSON解析的类库,使用相当方便!具体用法如下: 1.主要用到的类: 主要用到了JavaScriptSerializer类,该类在System.Web.Script.Serialization命名空间(在System.Web.Extensions.dll 中),需要把.NET版本修改为 .NET Framework 4(默认是.NET Framework 4 Client Profile)才能在Add Reference的 .NET

  • C#中把Datatable转换为Json的5个代码实例

    实例一: 复制代码 代码如下: /// <summary>         /// Datatable转换为Json         /// </summary>        /// <param name="table">Datatable对象</param>         /// <returns>Json字符串</returns>         public static string ToJson(D

  • C#处理Json字符串实例分析

    Json字符串对于做web应用的应该很熟悉,其实在很多请求我们返回的都是Json字符串.那对于C#代码如何处理Json字符串呢,.Net封装了一个类叫做JavaScriptSerializer[MSDN Library 链接http://msdn.microsoft.com/en-us/library/ee191864(v=vs.110).aspx]:这个类提供了一个方法. 下面这个是我在快递100往抓取的一个圆通的快递信息.对于我们有用的信息是快递时间,快递状况.那我该如何来做. 复制代码 代

  • C# JSON格式化转换辅助类 ConvertJson

    可能我们用惯了 Newtonsoft.Json.dll 等第三方的类库来实现序列化等类似的操作,但是有时只是简单的用一下,感觉没必要那么费事,所谓杀鸡焉用牛刀,自制个小刀即可. 代码分享给大家,如下: using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Reflection; using System.Collections; using System

  • C#中的DataSet、string、DataTable、对象转换成Json的实现代码

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// <summary> /// 过滤特殊字符 /// </summary> /// <param name="s">字符串</param> /// <returns>json字符串</returns> private s

  • C#实现将类的内容写成JSON格式字符串的方法

    本文实例讲述了C#实现将类的内容写成JSON格式字符串的方法.分享给大家供大家参考.具体如下: 本例中建立了Person类,赋值后将类中内容写入到字符串中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //需要引用 Newtonsoft.Js

  • C#实现json格式转换成对象并更换key的方法

    本文实例讲述了C#实现json格式转换成对象并更换key的方法.分享给大家供大家参考.具体分析如下: 由于是不标准的序列化对象类型,因此你无法通过标准的反序列化类来实现,需要自定义一个序列化类或者简单点,直接自定义一个方法解析Json数据.解析后的数据用Dictionary来存放. string str = "{\"name\": \"甄嬛体\",\"2012-05-04 14:59\": \"5724\"}&quo

  • C#实现将json转换为DataTable的方法

    本文实例讲述了C#实现将json转换为DataTable的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: #region 将json转换为DataTable /// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson">得到的json</param> /// <returns></returns> pr

  • C#实现对Json字符串处理实例

    本文实例讲述了C#实现对Json字符串处理方法,分享给大家供大家参考.具体分析如下: 一般对于web应用开发人员来说对Json字符串都会很熟悉,其实在很多请求我们返回的都是Json字符串.那对于C#代码如何处理Json字符串呢,.Net封装了一个类叫做JavaScriptSerializer[MSDN Library 链接:http://msdn.microsoft.com/en-us/library/ee191864(v=vs.110).aspx]:这个类提供了一个方法. 下面这个是在快递10

  • C#中Json字符串的各种应用类实例讲解

    在程序中任何事物及信息都可以用对象进行描述和承载,除了比较流行的xml之外,还有一种简洁快速处理目标信息的形式那就是Json格式. 首先Json格式有自己固定的格式:例如person这个对象就可以简单的表示成{"name":"xxxx","age":12,"sex":"男"}形式. Json格式的描述如下:先用{}包含需要表达的对象信息,在{}里使用PropertyName:Value进行对象属性的描述,同

随机推荐