Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。

让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json的转换.
官网上三种不同的组件性能对比

/******************************************************************
* 创建人:HTL
* 创建时间:2015-04-08 15:36:35
* 说明:C# 使用Newtonsoft.Json序列化和反序列化自定义类型
* Json.Net版本:6.0.0.0
* 需要导入Newtonsoft.Json组件
* DEMO Url:http://ideone.com/I6MuaZ
* Email:huangyuan413026@163.com
*******************************************************************/
using System;
using Newtonsoft.Json;
using System.Collections.Generic;
namespace NewtonsoftJsonTest
{
//自定义类型
public class User
{
public string name { get; set; }
public string age { get; set; }
public override string ToString()
{
if (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(age)) return string.Empty; return string.Format("age:{0},name:{1}", this.age, this.name);
}
}
class Program
{
public static void Main(string[] args)
{
User p = null; #region//将字符串反序列化成自定义类型
try
{
p = JsonConvert.DeserializeObject<User>("{ \"age\":\"10\" , \"name\":\"HTL\" }");
//User p =(User)JsonConvert.DeserializeObject("{ \"age\":\"10\" , \"name\":\"HTL\" }",typeof(User));
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("将字符串反序列化成自定义类型结果");
Console.WriteLine((p ?? new User()).ToString());//输出:"age:10,name:HTL"
p = null;
#endregion Console.WriteLine(Environment.NewLine); #region//将自定义类型序列化成字符串
p = new User
{
age = ""
,
name = "HTL"
};
string s = string.Empty;
try
{
s = JsonConvert.SerializeObject(p);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
p = null;
}
Console.WriteLine("将自定义类型序列化成字符串结果:");
Console.WriteLine(s ?? string.Empty); //输出:"{\"name\":\"HTL\",\"age\":\"20\"}"
s = string.Empty;
#endregion
Console.ReadLine();
}
}
}

C# 使用Newtonsoft.Json序列化自定义类型的更多相关文章

  1. Newtonsoft.Json序列化Enum类型

    [JsonConverter(typeof(StringEnumConverter))] public StringAlignment TextAlign { get => textAlign; ...

  2. 自定义JsonResult处理JSON序列化DateTime类型数据(Ext4.2+ASP.NET MVC 4)

    最近项目中前台页面使用Extjs4.2 ,在后台ASP.NET MVC4返回的DateTime类型的数据错返回的DateTime类型的JsonResult的结果中的值是“\/Date(13784461 ...

  3. Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  4. Newtonsoft.Json 序列化踩坑之 IEnumerable

    Newtonsoft.Json 序列化踩坑之 IEnumerable Intro Newtonsoft.Json 是 .NET 下最受欢迎 JSON 操作库,使用起来也是非常方便,有时候也可能会不小心 ...

  5. [C#][Newtonsoft.Json] Newtonsoft.Json 序列化时的一些其它用法

    Newtonsoft.Json 序列化时的一些其它用法 在进行序列化时我们一般会选择使用匿名类型 new { },或者添加一个新类(包含想输出的所有字段).但不可避免的会出现以下情形:如属性值隐藏(敏 ...

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

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

  7. c# 使用 Newtonsoft.Json 序列化json字符串以及,反序列化对象

    1. 序列化 对象 /** 使用 Newtonsoft.Json 序列化对象 **/ [WebMethod] public String getPersonInfos() { // 初始化数据 Lis ...

  8. Newtonsoft.Json序列化日期时间去T的几种方式。

    原文地址:MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式. http://www.cnblogs.com/wuball/p/4231343. ...

  9. MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式。

    原文链接:https://www.muhanxue.com/essays/2015/01/8623699.html MVC web api 返回JSON的几种方式 1.在WebApiConfig的Re ...

随机推荐

  1. 解决Ubuntu 16.04下提示boot分区空间不足的办法

    原文地址: http://www.jb51.net/article/106976.htm https://www.linuxidc.com/Linux/2015-09/123227.htm 因为lin ...

  2. ubuntu python opencv3 cv2.cv2 has no attribute 'face' 'cv2.face' has no attribute 'createEigenFaceRecognizer'

    学习opencv过程中遇到错误: 1  cv2.cv2 has no attribute 'face' 经过一顿查,,,各种走弯路 最后一下子就解决了: pip install opencv-pyth ...

  3. C# 字符串处理小工具

    之前刚上大学时沉迷于安全方面,当时一直想写一个处理字符串的小程序. 无奈当时没有太多时间,一直拖延到这寒假. 寒假闲来无事,所以就写写小程序来练手,顺便复习一下窗体和基础. 实现的功能有以下: 转换为 ...

  4. 鸟哥的私房菜:Bash shell(三)-命令别名与历史指令

    一  命令别名设定: alias, unalias 命令别名是一个很有趣的东西,特别是你的惯用指令特别长的时候!还有, 增设预设的属性在一些惯用的指令上面,可以预防一些不小心误杀档案的情况发生的时候! ...

  5. 【转载】CMarkup函数说明

    1.初始化Load    导入一个XML文件到CMarkup的对象中,并对它进行解析.类似C#的Load.SetDoc  从字符串中导入XML数据,并对它解析.类似C#的LoadXml. 2.输出Sa ...

  6. python 爬虫学习<将某一页的所有图片下载下来>

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...

  7. CF 277.5 A.SwapSort 水题

    //STL教你做人系列 #include<stdio.h> #include<iostream> #include<math.h> #include<algo ...

  8. leetcode659. Split Array into Consecutive Subsequences

    leetcode659. Split Array into Consecutive Subsequences 题意: 您将获得按升序排列的整数数组(可能包含重复项),您需要将它们拆分成多个子序列,其中 ...

  9. Git_忽略特殊文件

    有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示“Untracked files ...”,有强迫症的童鞋心里 ...

  10. MySQL多表联查之ThinkPHP中的实现

    创建两个表如图: sp_user表: sp_dept表: 目的:通过sp_user的dept_id查询所属部门即sp_dept中的name. 原生sq方法一:select t1.*,t2.name a ...