欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# JSON格式数据高级用法

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

 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(下载地址)

 

基本用法

json.net是支持序列化和反序列化datatable、dataset、entity framework和entity的

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);
// {
//   "name": "apple",
//   "expiry": "2008-12-28t00:00:00",
//   "sizes": [
//     "small"
//   ]
// }

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;
// bad boys

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();
// {
//   "myarray": [
//     "manual text",
//     "2000-05-23t00:00:00"
//   ]
// }