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;
namespace json
{
//学生类
[DataContract]
public class Student
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
[DataMember]
public string Sex { get; set; }
public Person person { get; set; }
public Student() {
ID = 101;
Name="gogo";
Age = 25;
Sex = "男";
person = new Person();
}
}
//person类
[DataContract]
public class Person
{
[DataMember]
public string person_name { get; set; }
[DataMember]
public int Age { get; set; }
public Person (string name,int age){
person_name=name;
Age=age;
}
public Person(){
person_name = "yuanshifu";
Age=10;
}
}
//封装两个类
public class Animal
{
public Student student0 { get; set; }
public List<Person> personList{get;set;}
public Animal(Student stu, List<Person> perlist)
{
student0 = stu;
personList = perlist;
}
public Animal(){ }
}
//测试
public class test {
static void Main(){
//准备序列化的数据
List<Person> pl=new List<Person>();
Person p1=new Person("fu1",10);
Person p2=new Person("fu2",20);
pl.Add(p1);
pl.Add(p2);
Student stu10=new Student();
Animal ani = new Animal(stu10,pl);
//开始序列化
DataContractJsonSerializer dj=new DataContractJsonSerializer(typeof(Animal));
MemoryStream ms=new MemoryStream();
dj.WriteObject(ms,ani);
ms.Position = 0;
StreamReader sr=new StreamReader(ms,Encoding.UTF8);
string str=sr.ReadToEnd();
Console.WriteLine(str);
Console.ReadKey();
//反序列化
using(MemoryStream ms0=new MemoryStream(Encoding.UTF8.GetBytes(str))){
Animal animal = (Animal)dj.ReadObject(ms0);//反序列化的具体代码
Student st1 = animal.student0;
List<Person> listperson = animal.personList;
Console.WriteLine("反序列化");
Console.WriteLine(st1.ID+":"+st1.Name+":"+st1.person+":"+st1.Sex);
Console.WriteLine("打印集合");
//遍历集合
foreach(Person fg in listperson){
Console.WriteLine(fg.person_name);
Console.WriteLine(fg.Age);
}
Console.ReadKey();
}
}
}
}
json序列化以及反序列化存在多个对象时候的处理的更多相关文章
- C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化
本文是基本上一篇博文进行改进而成,上一篇请见: C++对象的JSON序列化与反序列化探索 此处就不多说了,直接上代码. 1. 序列化基类 #pragma once #include <strin ...
- C++对象的JSON序列化与反序列化探索完结-列表的序列化与反序列化
在前两篇文章中,我们已经完成对普通对象以及复杂对象嵌套的序列化与反序列化,见如下地址: C++对象的JSON序列化与反序列化探索 C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化 ...
- 序列化对象C++对象的JSON序列化与反序列化探索
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 一:背景 作为一名C++开发人员,我始终很期待能够像C#与JAVA那样,可以省力的进行对象的序列化与反序列化,但到现在为止,还没有找 ...
- C++对象的JSON序列化与反序列化探索
一:背景 作为一名C++开发人员,我一直很期待能够像C#与JAVA那样,可以轻松的进行对象的序列化与反序列化,但到目前为止,尚未找到相对完美的解决方案. 本文旨在抛砖引玉,期待有更好的解决方案:同时向 ...
- Json序列化与反序列化(对象与Json字符串的转换)--C#
public class JsonHelper { #region Json序列化与反序列化 /// <summary> /// 将json转化为对象 /// (需要提前构造好结构一致的M ...
- DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...
- Newtonsoft.Json 序列化和反序列化 时间格式
From : http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeO ...
- Net中JSON序列化和反序列化处理(日期时间特殊处理)
0 缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...
- Newtonsoft.Json 序列化和反序列化 时间格式 [转]
1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg: A a=new A(); a.Name="Elain ...
随机推荐
- Java Lombok
Reducing Boilerplate Code with Project Lombok https://projectlombok.org/features/all https://github. ...
- 申请IPV6地址配置IPV6域名
0. 前言 最近弄了一下IPV6,虽然不知道什么时候会用到,但是服务器支持IPV6,还是有必要的. 1. 申请IPV6地址 https://tunnelbroker.net/ 到这个网址去注册一个帐号 ...
- 每帧创建一个item
-- 加载列表测试 function UIBagController:onLoadTest() self.goodsprop = DB.getTable("goodsprop"); ...
- VisualSVN Server 配置和使用
以前使用官方Subversion搭建SVN版本控制环境,很繁琐.在Windows 系统上,要想让它随系统启动,就要封装SVN Server为windws service,还要通过修改配置文件来控制用户 ...
- CAD技巧之002——如何用Cass内插高程点或者说加密高程点
CAD技巧之002——如何用Cass内插高程点或者说加密高程点 很多同志如果遇到奇葩的Cass内插高程点或者说加密高程点,怎么办,一个个编辑?如果工作量很大,怎么办呢. 今天九天就教您一个好方法! 废 ...
- git push origin master和git push有什么区别?
1.master是主分支,还可以建一些其他的分支用于开发.2.git push origin master的意思就是上传本地当前分支代码到master分支.git push是上传本地所有分支代码到远程 ...
- CAS (15) — CAS 线上环境 Ehcache Replication 的非稳定重现错误 java.util.ConcurrentModificationException
CAS (15) - CAS 线上环境 Ehcache Replication 的非稳定重现错误 摘要 线上环境在 EhCache Replication 过程中出现 java.util.Concur ...
- Java知多少(9) import及Java类的搜索路径
如果你希望使用Java包中的类,就必须先使用import语句导入. import语句与C语言中的 #include 有些类似,语法为: import package1[.package2…].c ...
- Java知多少(63)线程间通信
上述例题无条件的阻塞了其他线程异步访问某个方法.Java对象中隐式管程的应用是很强大的,但是你可以通过进程间通信达到更微妙的境界.这在Java中是尤为简单的. 像前面所讨论过的,多线程通过把任务分成离 ...
- 在Android Studio中查看Sqlite的方法
只说最好的方法,使用工具stetho:http://facebook.github.io/stetho/ 1.在Gragle中加上如下语句: dependencies { // Stetho core ...