当前位置: 移动技术网 > IT编程>开发语言>.net > C# JSON格式数据高级用法

C# JSON格式数据高级用法

2018年11月20日  | 移动技术网IT编程  | 我要评论

藁城市邮编,难产,陈轩石

 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"
//   ]
// }

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网