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

时间:2021-12-07 10:04:15

全局引用 
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(, , );
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解析出你关心的那部分即可,非常方便。

在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍的更多相关文章

  1. Asp&period;Net中使用Newtonsoft&period;Json转换&comma;读取&comma;写入

    using Newtonsoft.Json;using Newtonsoft.Json.Converters; //把Json字符串反序列化为对象目标对象 = JsonConvert.Deserial ...

  2. c&num; 在&period;NET使用Newtonsoft&period;Json转换&comma;读取&comma;写入json

    转自:http://blog.sina.com.cn/s/blog_70686f3a0101kemg.html  首先,大家要明白什么是json,了解更多关于json方面资料大家可以点击https:/ ...

  3. 在&period;NET使用Newtonsoft&period;Json转换&comma;读取&comma;写入json

    首先,大家要明白什么是json,了解更多关于json方面资料大家可以点击https://www.ibm.com/developerworks/cn/web/wa-lo-json/ ,我在这里简单介绍下 ...

  4. SQL中采用Newtonsoft&period;Json处理json字符串

    原文 SQL中采用Newtonsoft.Json处理json字符串 使用环境: SQL Server2005; VS2010; 关于SQL中部署CLR程序集的方法,网上一搜一大把,需要了解的自行查阅, ...

  5. Newtonsoft&period;Json 转换DateTime类型为字符串时,串内部会有一个T。解决方案

    使用Newtonsoft.Json 转换DateTime类型时,若使用标准转换,则字符串内会有一个T(虽然再转换成DateTime没有问题). 若要转换成DateTime没有T,可以加上特性: pub ...

  6. Net Core 下 Newtonsoft&period;Json 转换字符串 null 替换成string&period;Empty

    原文:Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty public class NullToEmptyStringResolver : De ...

  7. 在 &period;NET Core 3&period;0 中支持 Newtonsoft&period;Json 的使用

    .NET Core 3.0 已经使用了一整套内置的 Josn 序列化/反序列化方案,而且看上去效率还不错.但对于某些项目必须使用到 Newtonsoft.Json 的时候,就会抛出如下异常: Syst ...

  8. &period;NET中的Newtonsoft&period;Json&period;JsonConvert&period;SerializeObject&lpar;string a&rpar;

    1.將string a 序列化為Json格式: 2.使用條件:將Newtonsoft.Json.dll作為引用添加到項目中.下载地址在这:http://json.codeplex.com/

  9. Newtonsoft&period;Json转换强类型DataTable错误:Self referencing loop detected with type &period;&period;&period;&period;&period;&period;

    问题,在使用Newtonsoft.Json对强类型的DataTable进行系列化时会出现循环引用错误 解决办法,不要直接系列化强类型的DataTable,改为 JsonConvert.Serializ ...

随机推荐

  1. android 开发中 添加库文件 和so 文件的存放位置和添加依赖

    so文件一般存储在  main 当中  jniLibs 当中 然后在build.gradle中添加 sourceSets { main { jniLibs.srcDirs = ['src/main/j ...

  2. 从C&num;垃圾回收&lpar;GC&rpar;机制中挖掘性能优化方案

    GC,Garbage Collect,中文意思就是垃圾回收,指的是系统中的内存的分配和回收管理.其对系统性能的影响是不可小觑的.今天就来说一下关于GC优化的东西,这里并不着重说概念和理论,主要说一些实 ...

  3. iOS系统提供开发环境下命令行编译工具:xcodebuild

    iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...

  4. C&num;的线程池的那些事

    最近在做站时发现,线程池的问题很棘手,所以总结了一篇关于线程池的文章,原文地址:http://www.shuonar.com/blog/ac16496b-87ec-4790-a9ea-d69bbffa ...

  5. 用Tomcat和Eclipse开发Servlet程序

    1. 安装eclipse 1). 在官网上直接下载Eclipse IDE for Java EE Developers,解压即可: 2. eclipse安装tomcat插件: 1). 在http:// ...

  6. &period;net学习网站汇总

    http://chs.gotdotnet.com/quickstart/简介:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例程序,直接在网上查看此示 ...

  7. 零基础如何迅速学习HTML5?新手小白学习web前端H5自白!

    很多的人在毕业之后才发现原来学的专业不是自己想做的工作,或者专业对口的工作待遇让人觉得并不满意,于是很多人选择培训机构学新的一门技能转换行业.IT行业的web前端H5受到很多学员的青睐.那么学习web ...

  8. monitor&period;go 源码阅读

    package main import (     "fmt"     "net/http" ) // 查询监控信息的接口 func statsHandler( ...

  9. Legal or Not ,图的拓扑

    ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that just ...

  10. tornado 模板引擎

    在tornado的模板引擎中,有两种方式,UImethod与UImodule 自定义方法 在模板中调用方法: tornado:与Django一样使用{{}},但是对于for循环之类,Django以{% ...