C# JSON格式数据用法

640?wx_fmt=jpeg

JSON简介

JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。

 

JSON与XML的比较

◆可读性

JSON和XML的可读性相比较而言,由于XML提供辅助的标签,更加适合人阅读和理解。

◆文件大小与传输

XML允许使用方便的标签,所以文件尺寸是要比JSON大的。而且JSON源于Javascript,所以天生的主战场是Javascript与网络,在这里,JSON有着XML无法赶超的优势。

 

JSON语法

1. JSON 语法是 JavaScript 对象表示法语法的子集。

数据在名称/值对中:名称是字符串,使用双引号表示。值可以是:数字(整数或浮点数),字符串(在双引号中),数组(在方括号中),对象(在花括号中),true/false/null。

数据由逗号分隔:

花括号保存对象:对象可以包含各种数据,包括数组。

方括号保存数组:数字可以包含对象。

在做开发的时候,很多数据都是以Json格式传输的,而使用Json的时候,我们通常会涉及到几个序列化对象的使用:

System.Runtime.Serialization.Json.DataContractJsonSerializer
System.Web.Script.Serialization.JavaScriptSerializer
Json.NET即Newtonsoft.Json 
由于Json.NET的性能及通用性较好,因此它的使用范围越来越广,借助前人的经验今天我也总结使用一下。 
官网API:http://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json.htm

开源的类库Newtonsoft.Json(下载地址https://www.newtonsoft.com/json)

private void Newtonsoft()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Name", Type.GetType("System.String"));
    dt.Columns.Add("Sex", Type.GetType("System.String"));
    dt.Columns.Add("Age", Type.GetType("System.Int32"));
    dt.Columns.Add("PhoneNumber", Type.GetType("System.String"));    for (int i = 0; i < 3; i++)
    {
        DataRow dr = dt.NewRow();
        dr["Name"] = "Name" + i;
        dr["Sex"] = i % 2 == 0 ? "" : "";
        dr["Age"] = 18 + i;
        dr["PhoneNumber"] = "18233388888";
        dt.Rows.Add(dr);
    }    /*序列化DataTable*/
    string json = JsonConvert.SerializeObject(dt);    /*反序列化DataTable*/
    DataTable dtSource = JsonConvert.DeserializeObject<DataTable>(json);    foreach (DataRow item in dtSource.Rows)
    {        string name = item["Name"].ToString();        string sex = item["Sex"].ToString();        int age = int.Parse(item["Age"].ToString());        string phoneNumber = item["PhoneNumber"].ToString();
    }
}

      Serialize JSON 格式转换示例:

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };string json = JsonConvert.SerializeObject(product);// 

Deserialize JSON 格式转换

string json = @"{
  'Name': 'Bad Boys',
  'ReleaseDate': '1995-4-7T00:00:00',
  'Genres': [
    'Action',
    'Comedy'
  ]
}";

Movie m = JsonConvert.DeserializeObject<Movie>(json);string name = m.Name;

LINQ to JSON 格式转换

JArray array = new JArray();
array.Add("Manual text");
array.Add(new DateTime(2000, 5, 23));

JObject o = new JObject();
o["MyArray"] = array;string json = o.ToString();


  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 在C#,可以使用JsonConvert类来处理JSON格式数据。引用\[1\]的代码展示了将一组JSON格式数据转换为字符串进行显示的方法。首先,需要引入Newtonsoft.Json命名空间,并使用JsonConvert.DeserializeObject方法将JSON字符串转换为对象。然后,可以通过对象的属性来获取相应的值。例如,可以使用m.Name来获取Name属性的值。引用\[2\]的代码展示了处理嵌套格式JSON数据的方法。同样地,可以使用JsonConvert.DeserializeObject方法将JSON字符串转换为JObject对象,然后通过索引来获取嵌套属性的值。引用\[3\]的代码展示了使用DataContractJsonSerializer类来处理JSON格式数据的方法。首先,需要定义一个包含属性的类,并使用DataContractJsonSerializer类进行序列化和反序列化操作。通过将对象写入MemoryStream并将其转换为字符串,可以将对象转换为JSON格式的字符串。然后,可以使用DataContractJsonSerializer类的ReadObject方法将JSON字符串转换回对象。 #### 引用[.reference_title] - *1* [C#处理JSON格式数据](https://blog.csdn.net/zls365365/article/details/123321137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C#解析json文件的方法](https://blog.csdn.net/u011555996/article/details/107348495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值