使用Json.Net处理.Net json序列化和反序列化继承类

以前一直没有怎么关注过Newtonsoft的Json.Net这个第三方的.NET Json框架,主要是我以前在开发项目的时候大多数使用的都是.NET自带的Json序列化类JavaScriptSerializer,但是最近在项目中需要序列化和反序列化一个实现接口的类,而如果使用JavaScriptSerializer的话就会出现问题,我们来看看如下场景。

首先我们有一个接口IPeople和一个实现了该接口的类Man

interface IPeople
{
    string Name { get; set; }
    int Age { get; set; }
}

class Man : IPeople
{
    public string Name { get; set; }

    public int Age { get; set; }
}

我们使用JavaScriptSerializer直接序列化IPeople接口

IPeople poeple = new Man();
poeple.Age = 25;
poeple.Name = "Scott";

JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
string textJson = jsSerializer.Serialize(poeple);
poeple = jsSerializer.Deserialize<IPeople>(textJson);

会得到序列化后的json文本textJson如下

{"Name":"Scott","Age":25}

我们可以看到在序列化后的json中没有任何属性说明这段json到底是由什么类序列化而来的,紧接着在JavaScriptSerializer执行jsSerializer.Deserialize<IPeople>(textJson)的时候就抛出了异常提示IPeople没有默认构造函数,也就是说JavaScriptSerializer不知道应该把textJson中的json反序列化为类Man。

而如果我们使用的是Json.NET的话,就可以完美的实现接口接口IPeople的序列化和反序列化

时间: 2024-08-03 16:17:50

使用Json.Net处理.Net json序列化和反序列化继承类的相关文章

Android 中的Json解析工具fastjson 、序列化、反序列化

Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:    速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser.包括自称最快的JackJson: 功能强大,完全支持JavaBean.集合.Map.日期.Enum,支持范型,支持自省:无依赖,能够直接运行在Java SE 5.0以上版本:支持And

Xml序列化、反序列化帮助类

之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 1 /// <summary> 2 /// 功能:Xml序列化.反序列化帮助类 3 /// 说明: 4 /// 创建人: 5 /// 创建时间:2014年3月13日 6 /// </summary> 7 public static class XmlHelper 8 { 9 /// <summary> 10 ///

模块讲解----json模块(跨平台的序列化与反序列化)

一.json的特点 1.只能处理简单的可序列化的对象:(字典,列表,元祖) 2.json支持不同语言之间的数据交互:(python  -  go,python - java) 二.使用场景 1.玩游戏的时候存档和读取记录. 2.虚拟机挂起.保存或者恢复.读档的时候. 三.语法: 1.简单的数据类型: 1 1.在内存中进行转换: 2 import json 3 #py基本数据类型转换字符串: 4 r = json.dumps([11,22,33]) 5 #li = '["alex",&q

C# 使用Json.NET对数据进行序列化和反序列化 | c# json serialize and deserialize using json.net JsonConvert

本文首发于个人博客https://kezunlin.me/post/22391aa3/,欢迎阅读最新内容! c# json serialize and deserialize using json.net JsonConvert Guide Json.NET JsonConvert.SerializeObject JsonConvert.DeserializeObject install Use NuGet to download the package "Project" ->

C# Json数据与对象的序列化与反序列化

先在NuGet包管理器中获取以下包: 在cs文件中引入命名空间: 1 using Newtonsoft.Json; 方法的实现: 1 public static string ObjectToJson(this object data) 2 { 3 return JsonConvert.SerializeObject(data); 4 } 5 6 public static T JsonToObject<T>(this string data) 7 { 8 return JsonConvert

C#中,Json的序列化和反序列化的几种方式总结

什么是JSON? JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write and easy for machines to parse and generate. JSON is a text format that is completely language independent. 翻译:Json[javascrip

[.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化

[.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化 本节导读: 介绍JSON的结构,在JS中的使用.重点说明JSON如何在.NET中快带序列化和反序列化.最后介绍在使用.NET序列化JSON过程中的注意事项. 读前必备: A.泛型       [.net 面向对象编程基础]  (18) 泛型 B.LINQ使用  [.net 面向对象编程基础] (20) LINQ使用 1. 关于JSON JSON的全称是”JavaScrip

C#中JSON序列化和反序列化

json序列化和反序列化帮助类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.IO; using System.Text.RegularExpressions; using System.We

Python序列化与反序列化-json与pickle

Python序列化与反序列化-json与pickle 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.json的序列化方式与反序列化方式 1>.json序列化 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90