打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#--对象转Json序列化

C#--对象转Json序列化

前言

  最近在研究Android项目,其中涉及到Android中解析Json数据的问题,需要模拟网络中传递Json数据的模式,因为以前是.net的工程师,所以想着从.net的平台开发服务,传递Json格式的数据。那么先来介绍一些什么是JSON。

 

JSON

  Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JS的一个子集。 Json采用完全独立于语言的文本格式。这使得Json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

  Json简单来说就是JS中的对象和数组,所以Json也存在两种结构:对象、数组。

 

Json序列化与反序列化

  对于.Net而言,从3.5之后就提供了DataContractJsonSerializer类,需要引用DLL,System.Runtime.Serialization。使用方式很简单,需要知道待转换的对象的类型,然后通过MemoryStream流写入的方式转换。对于DataContractJsonSerializer对象而言,序列化和反序列化只需要了解两个方法即可,这两个方法都具有多放重载,适用于不同的环境,这两个方法是:

  使用DataContractJsonSerializer序列化对象和反序列化Json都比较简单,下面给出示例代码:

  通过这个转换类,可以对对象进行序列化成Json和反序列化成对象。但是存在一个问题,就是对于集合类型的数据,可以序列化成Json,但是把这个Json反序列化则会失败,我在这里也没有找到更好的办法反序列化集合类型的数据。现在就一些常见.Net类型的数据进行序列化展示。

  新建一个获取数据的类JsonObject,在其中分别返回一个Person(id,name,age)对象、List<Person>对象、List<string>对象,List<Dictionary<string, object>>对象,分别看看序列化后的数据。

  JsonObject类:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5  6 namespace WebDemo.Json 7 { 8     static public class JsonObject 9     {10         static public Person getPerson()11         {12             Person person = new Person();13             person.id = 20;14             person.name = "slive";15             person.age = 24;16             return person;17         }18         static public List<Person> getPersonList()19         {20             List<Person> personList = new List<Person>();21             Person person = new Person();22             person.id = 20;23             person.name = "slive";24             person.age = 24;25             Person person2 = new Person();26             person2.id = 30;27             person2.name = "jack";28             person2.age = 34;29             Person person3 = new Person();30             person3.id = 40;31             person3.name = "damon";32             person3.age = 54;33             personList.Add(person);34             personList.Add(person2);35             personList.Add(person3);36             return personList;37         }38         static public List<string> getStringList()39         {40             List<string> stringlist = new List<string>();41             stringlist.Add("jack");42             stringlist.Add("dick");43             stringlist.Add("sean");44             return stringlist;45         }46         static public List<Dictionary<string,object>> getDicList()47         {48             List<Dictionary<string, object>> dicList = new List<Dictionary<string, object>>();49             Dictionary<string, object> dic1 = new Dictionary<string, object>();50             dic1.Add("id", 17);51             dic1.Add("name", "jerry");52             dic1.Add("age", 24);53             Dictionary<string, object> dic2 = new Dictionary<string, object>();54             dic2.Add("id", 18);55             dic2.Add("name", "meimei");56             dic2.Add("age", 23);57             Dictionary<string, object> dic3 = new Dictionary<string, object>();58             dic3.Add("id", 19);59             dic3.Add("name", "damon");60             dic3.Add("age", 28);61             dicList.Add(dic1);62             dicList.Add(dic2);63             dicList.Add(dic3);64             return dicList;65         }66     }67 }

  分别对JsonObject返回的数据进行序列化,可以看到结果:

总结

  最近一直在研究Android开发,所以涉及到Json的解析问题,才会想着找找对于Json对象的序列化问题。Json作为一个独立于语言的文本,使用什么语言并不重要,这里只是需要把数据对象序列化为Json,传递给Android客户端做准备,虽然这种方式对于集合的反序列化存在问题,但是不影响序列化与数据传递。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Flex Json文档.txt
C#字典类型转换为Json格式
.Net深入实战系列
JavaScript 学习-6.对象(object)的序列化和反序列化
Gson简要使用笔记
使用Python读取,写入和解析JSON
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服