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

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. 一道简单的python面试题-购物车

    要求实现:1.程序开始运行时要求手动填入工资金额2.然后展示一份带有价格的商品列表3.选择某个商品,足够金额购买就添加到购物车,否则提示无法购买4.退出后列出购物车清单 #!/usr/bin/pyth ...

  2. iOS多个storyboard间跳转

    Stroyboard 可以被看作一个管理View画面的集合.也就是说一个iOS专案裡面并没有限制只能有一个Storyboard.所以在你的APP专案中,你可以把功能相近的View放到同一个APP之中, ...

  3. sublime text 3 环境变量的配置、安装Package Control、汉化和注册

    1.在运行里输入sysdm.cpl打开环境变量设置界面,输入sublime的安装目录,分号和之前的隔开 2.下载好Package Control,解压重命名为package control 下载地址: ...

  4. zookeeper频繁异常问题分析

    Reference: https://blog.csdn.net/xjping0794/article/details/77784171 1.1            操作系统信息1.1.1      ...

  5. 灯箱效果插件Magnific Popup详解

    Magnific Popup 是一个非常优秀的弹出对话框或者灯箱效果插件.它基于jQuery(zepto)开发,使用非常简单,特点就是:非常好用. 官网地址: http://dimsemenov.co ...

  6. spring中定时任务quartz2.2.3

    定时任务几种实现方式 Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务,没怎么用过就不说了.Spring3.0以后自带的task,可以将它 ...

  7. Java知多少(70)面向字节流的应用

    文件输入输出流 文件输入输出流 FileInputStream 和 FileOutputStream 负责完成对本地磁盘文件的顺序输入输出操作. [例 10-5]通过程序创建一个文件,从键盘输入字符, ...

  8. (转)java 层调用Jni(Ndk) 持久化c c++ 对象

    对于Jni(Ndk) 很多人应该都有印象,Android的ndk接触到的机会相对会比较多,本例子以android平台为例,pc端的话就以简单的windows为例, 编码完用vs 或是 gcc进行编译成 ...

  9. Linux目录详细说明大全(推荐)

    Linux目录详细说明大全,方便你以后合理规划及管理 "/" : 根目录Linux文件系统的入口.也是最高级,最重要的的目录.除衍生出其它目录,还和系统的开机,还原,系统修复有的, ...

  10. 如何在django里面添加自定义命令

    第一步:创建对应的目录 第二步:继承父类,写自己的逻辑代码 第三步:执行 manage.py 查看自己的命令