存在多个对象的时候,只需要将反序列化存在的对象,遍历出来即可。

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序列化以及反序列化存在多个对象时候的处理的更多相关文章

  1. C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化

    本文是基本上一篇博文进行改进而成,上一篇请见: C++对象的JSON序列化与反序列化探索 此处就不多说了,直接上代码. 1. 序列化基类 #pragma once #include <strin ...

  2. C++对象的JSON序列化与反序列化探索完结-列表的序列化与反序列化

    在前两篇文章中,我们已经完成对普通对象以及复杂对象嵌套的序列化与反序列化,见如下地址: C++对象的JSON序列化与反序列化探索 C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化 ...

  3. 序列化对象C++对象的JSON序列化与反序列化探索

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 一:背景 作为一名C++开发人员,我始终很期待能够像C#与JAVA那样,可以省力的进行对象的序列化与反序列化,但到现在为止,还没有找 ...

  4. C++对象的JSON序列化与反序列化探索

    一:背景 作为一名C++开发人员,我一直很期待能够像C#与JAVA那样,可以轻松的进行对象的序列化与反序列化,但到目前为止,尚未找到相对完美的解决方案. 本文旨在抛砖引玉,期待有更好的解决方案:同时向 ...

  5. Json序列化与反序列化(对象与Json字符串的转换)--C#

    public class JsonHelper { #region Json序列化与反序列化 /// <summary> /// 将json转化为对象 /// (需要提前构造好结构一致的M ...

  6. DotNet的JSON序列化与反序列化

    JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...

  7. Newtonsoft.Json 序列化和反序列化 时间格式

    From : http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeO ...

  8. Net中JSON序列化和反序列化处理(日期时间特殊处理)

    0  缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...

  9. Newtonsoft.Json 序列化和反序列化 时间格式 [转]

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

随机推荐

  1. [APM] 解读2016之APM国内篇:快速增长的APM市场和技术

    前言 2016年是APM技术和市场快速发展的一年,在这一年里APM市场特别是国内的市场取得了极大的增长,用户对APM价值的认识和接受度也有了很大的提升,国内市场已基本完成了用户教育和市场培养的阶段.与 ...

  2. C++11 右值引用和转移语义

    新特性的目的 右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move Sementics) 和 ...

  3. GC调优在Spark应用中的实践[转]

    作者:仲浩   出处:<程序员>电子刊5月B   摘要:Spark立足内存计算,常常需要在内存中存放大量数据,因此也更依赖JVM的垃圾回收机制.与此同时,它也兼容批处理和流式处理,对于程序 ...

  4. 登录tomcat服务器首页直接跳转到项目

    原文:https://www.cnblogs.com/xwdreamer/p/3489996.html 需求: 客户觉得每次输入http://10.138.16.232:8080/abc/ 比较烦,他 ...

  5. 【iCore1S 双核心板_FPGA】例程三:计数器实验——计数器的使用

    实验现象: 程序下载成功后,程序中的计数器开始计数,每次计满后,计数器清零,三色LED中红色LED的状态反转.可以看到,红色LED以一定的时间间隔闪烁. 核心源代码: //-------------- ...

  6. MongoDB随笔3:使用索引

    创建索引的语句很简单. 1.单键索引的创建:db.test.ensureIndex({name:1},{name:'index_name'}) 2.复合索引的创建:db.test.ensureInde ...

  7. C语言中的字符串处理库函数介绍与实现

    一.介绍 本文将主要介绍字符串处理库函数中的strlen.strcpy.strcat.strcmp.atoi等,主要由<string.h>头文件提供. 二.strlen函数:求字符串的长度 ...

  8. Linux时间变慢解决方法

    情景:系统为CentOS-5.4,硬件时间正确(查看硬件时间的方法见下面),系统时间每隔24小时会慢20分钟左右Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Cl ...

  9. CXF总结

    CXF总结 如何来用cxf结合spring开发webservice接口.by@wangkun 下载cxf 下载地址:http://cxf.apache.org/download.html 我下载的版本 ...

  10. 基于Jersey使用Session

    原文:https://stackoverflow.com/questions/909185/jersey-security-and-session-management 方法一.注入HttpServl ...