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

在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍

程序员文章站 2024-03-06 21:17:20
全局引用 using newtonsoft.json; using newtonsoft.json.converters; //把json字符串反序列化为对象 目标对象 =...
全局引用
using newtonsoft.json;
using newtonsoft.json.converters;

//把json字符串反序列化为对象
目标对象 = javascriptconvert.deserializeobject(json字符串, typeof(目标对象));
//把目标对象序列化为json字符串
stringjson字符串 = javascriptconvert.serializeobject(目标对象);
1、引用newtonsoft.json.dll;
2、在项目中添加引用;
序列化和反序列在.net项目中,简单示例

复制代码 代码如下:

productproduct = newproduct();
product.name = "apple";
product.expiry = newdatetime(2008, 12, 28);
product.price = 3.99m;
product.sizes = newstring[] { "small", "medium", "large"};
stringoutput = javascriptconvert.serializeobject(product);


注意:
一、如果需要序列化实体
1、类名必须添加[datacontract]标记;
2、类属性添加[datamember]标记;
二、如果有不需要序列化的字段,可以给该字段添加[jsonignore]标记
在newtonsoft这个类库中对于日期的序列化有多种方式,可以类的datatime成员添加上对应的标记,这样在进行序列化和反序列化时就会按照指定的方式进行,
在本例中user类(如下类)的createdate属性添加的属性是[jsonconverter(typeof(isodatetimeconverter))],而birthday属性添加的属性是[jsonconverter(typeof(javascriptdatetimeconverter))],从序列化的结果可以看出来它们最终的表现形式并不一样。
复制代码 代码如下:

[datacontract]
public class user
{
/// <summary>
/// 编号
/// </summary>
[datamember]
public int userid { get; set; }
/// <summary>
/// 用户名
/// </summary>
[datamember]
public string username { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[datamember]
[jsonconverter(typeof(isodatetimeconverter))]
public datetime createdate { get; set; }
/// <summary>
/// 生日
/// </summary>
[datamember]
[jsonconverter(typeof(javascriptdatetimeconverter))]
public datetime birthday { get; set; }
/// <summary>
/// 相关url
/// </summary>
[datamember]
public list<string> urls { get; set; }
/// <summary>
/// 薪水
/// </summary>
[scriptignore]//使用javascriptserializer序列化时不序列化此字段
[ignoredatamember]//使用datacontractjsonserializer序列化时不序列化此字段
[jsonignore]//使用jsonconvert序列化时不序列化此字段
public int salary { get; set; }
/// <summary>
/// 权利级别
/// </summary>
[datamember]
public priority priority { get; set; }

public user()
{
urls = new list<string>();
}
}


其他:
newtonsoft.json.jsonconvert类是非微软提供的一个json序列化和反序列的开源免费的类库(下载网址是:http://www.codeplex.com/json/),它提供了更灵活的序列化和反序列化控制,并且如果你的开发环境使用的是.net framework3.5及以后版本的话,你就可以使用linq to json,这样一来面对一大段的数据不必一一解析,你可以使用linq to json解析出你关心的那部分即可,非常方便。

参考: