国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#操作 JSON方法匯總

2020-01-24 01:26:05
字體:
供稿:網(wǎng)友

RestAPI中, 經(jīng)常需要操作json字符串,  需要把json字符串"反序列化"成一個(gè)對象, 也需要把一個(gè)對象"序列化"成一字符串。

C# 操作json,  比較簡單。  本文介紹幾種方法

步驟

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

第一步:建立相應(yīng)的實(shí)體類

第二步: 調(diào)用方法把Json字符串"反序列化"成對象

了解json的語法

首先要了解json的語法,這樣才能知道怎么創(chuàng)建實(shí)體類.

Json 的語法很簡單, 就四條

數(shù)據(jù)在名稱/值對中
數(shù)據(jù)由逗號分隔
花括號保存對象
方括號保存數(shù)組

創(chuàng)建實(shí)體類的例子

{"FirstName":"小坦克","LastName":"Tank","Age":30}
相應(yīng)的實(shí)體類可以為

  public class Person   {    public String FirstName    { get; set; }    public String LastName    { get; set; }    public int Age    { get; set; }  }

自動(dòng)生成JSON的實(shí)體類

一個(gè)復(fù)雜的實(shí)體類,我們自己去寫的話,可能需要1個(gè)小時(shí)以上。 那有沒有工具能直接生成實(shí)體類呢,這樣能方便太多了。  當(dāng)然有

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

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

優(yōu)點(diǎn):  使用非常方便.   看個(gè)例子就知道怎么用了

下載地址   //m.survivalescaperooms.com/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'}]}]";      // 反序列化 單個(gè)對象      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; }  }}

最后我們來看個(gè)實(shí)例

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; }    }   }}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 柳州市| 甘德县| 东莞市| 黄陵县| 江华| 晋宁县| 内江市| 义乌市| 丹棱县| 宁河县| 霍山县| 安仁县| 新和县| 德令哈市| 建瓯市| 乌鲁木齐市| 东乌珠穆沁旗| 怀宁县| 青河县| 泗水县| 临西县| 江阴市| 犍为县| 安仁县| 永丰县| 桂东县| 玉环县| 扬中市| 福建省| 阜南县| 台东县| 岑巩县| 广宁县| 闽清县| 芦山县| 安平县| 兴和县| 克山县| 涿州市| 福泉市| 左权县|