当前位置: 移动技术网 > IT编程>开发语言>c# > C#操作 JSON方法汇总

C#操作 JSON方法汇总

2019年07月18日  | 移动技术网IT编程  | 我要评论
restapi中, 经常需要操作json字符串,  需要把json字符串"反序列化"成一个对象, 也需要把一个对象"序列化"成一字符串。 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个小时以上。 那有没有工具能直接生成实体类呢,这样能方便太多了。  当然有

  ----开源的winform工具。

使用第三方工具 newtonsoft.json.dll

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

下载地址   //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; }
    } 
  }

}

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网