usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Runtime.Serialization.Json;usingSystem.IO;usingSystem.Text;usingSystem.Web.Script.Serialization;usingSystem.Data;namespaceMobai.KinectApp

{///

///JSON序列化和反序列化辅助类///

///

///JSON帮助类。用于将对象转换为Json格式的字符串,或者将Json的字符串转化为对象。///

public static classJsonHelper

{///

///将对象转化为Json字符串///

/// 源类型

/// 源类型实例

/// Json字符串

public static string GetJsonFromObj(T obj)

{

DataContractJsonSerializer jsonSerializer= newDataContractJsonSerializer(obj.GetType());using (MemoryStream ms = newMemoryStream())

{

jsonSerializer.WriteObject(ms, obj);returnEncoding.UTF8.GetString(ms.ToArray());

}

}///

///将Json字符串转化为对象///

/// 目标类型

/// Json字符串

/// 目标类型的一个实例

public static T GetObjFromJson(stringstrJson)

{

T obj= Activator.CreateInstance();using (MemoryStream ms = newMemoryStream(Encoding.UTF8.GetBytes(strJson)))

{

DataContractJsonSerializer jsonSerializer= newDataContractJsonSerializer(obj.GetType());return(T)jsonSerializer.ReadObject(ms);

}

}///

///将DataTable转换为JSON字符串///

/// 数据表

/// JSON字符串

public static stringGetJsonFromDataTable(DataTable dt)

{

StringBuilder JsonString= newStringBuilder();if (dt != null && dt.Rows.Count > 0)

{

JsonString.Append("{");

JsonString.Append("\"TableInfo\":[");for (int i = 0; i < dt.Rows.Count; i++)

{

JsonString.Append("{");for (int j = 0; j < dt.Columns.Count; j++)

{if (j < dt.Columns.Count - 1)

{

JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");

}else if (j == dt.Columns.Count - 1)

{

JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");

}

}if (i == dt.Rows.Count - 1)

{

JsonString.Append("}");

}else{

JsonString.Append("},");

}

}

JsonString.Append("]}");returnJsonString.ToString();

}else{return null;

}

}///

///将对象转化为Json字符串///

/// 源对象

/// json数据

public static string ObjToJson(this objectobj)

{

JavaScriptSerializer serialize= newJavaScriptSerializer();returnserialize.Serialize(obj);

}///

///将Json字符串转化为对象///

/// Json字符串

/// 目标对象

public static T JsonToObj(stringstrJson)

{

JavaScriptSerializer serialize= newJavaScriptSerializer();return serialize.Deserialize(strJson);

}///

///将对象转化为Json字符串(控制深度 )///

/// 源对象

/// 深度

/// json数据

public static string ObjToJson(this object obj, intrecursionDepth)

{

JavaScriptSerializer serialize= newJavaScriptSerializer();

serialize.RecursionLimit=recursionDepth;returnserialize.Serialize(obj);

}///

///将Json字符串转化为对象(控制深度 )///

/// Json字符串

/// 深度

/// 目标对象

public static T JsonToObj(string strJson, intrecursionDepth)

{

JavaScriptSerializer serialize= newJavaScriptSerializer();

serialize.RecursionLimit=recursionDepth;return serialize.Deserialize(strJson);

}///

///将DataTable转换为JSON字符串///

/// DataTable

/// json数据

public static stringDataTableToJson(DataTable dt)

{

Dictionary dic = new Dictionary();int index = 0;foreach (DataRow dr indt.Rows)

{

Dictionary result = new Dictionary();foreach (DataColumn dc indt.Columns)

{

result.Add(dc.ColumnName, dr[dc].ToString());

}

dic.Add(index.ToString(), result);

index++;

}returnObjToJson(dic);

}

}

}

json 反序列化 父子类型_json类序列化与反序列化参考相关推荐

  1. json 反序列化 父子类型_Json的序列化和反序列化

    一.什么是Json: 中午肚子饿了,到餐厅点餐.向服务员点了几个菜,厨师根据用户的需求,开始烹饪食物,食物烹饪好后,怎么将食物呈现给用户呢?这时就需要用到盛放食物的碗了.用户拿到盛放食物的碗,就可以获 ...

  2. Int类型数据的序列化以及反序列化(与Java服务器通讯预热)

    游戏前端,避免不了的跟服务器通讯,其实游戏的大部分逻辑都在服务端,并不在客户端,所以需要跟服务端通讯"协商"一些逻辑,既然通讯,就少不了的传输,传输之前又要序列化,这篇博客主要讲一 ...

  3. C# 实体类序列化与反序列化一 (XmlSerializer)

    /// <summary>/// 实体类序列化的反序列化的类/// </summary>/// <typeparam name="T">< ...

  4. json 反序列化 父子类型_Jaskson精讲第7篇-类继承关系下的JSON序列化与反序列化JsonTypeInfo...

    Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的, ...

  5. spring boot添加 LocalDateTime 等 java8 时间类序列化和反序列化的支持

    由于项目将原有的  Date类型的字段改造为 LocalDate,LocalDateTime,LocalTime 类型, 发现  spring  对项目的时间格式无法自动转换,故需手动配置下. 在sp ...

  6. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

  7. 程序验证Jackson反序列化的规则、Jackson序列化与反序列化关键方法程序详细分析

    目录 0. 为什么要做这个分析 1. Jackson反序列化时,无参构造.有参构造的执行顺序[附程序截图] 1.1 没有无参构造时: 1.2 无参构造和有参构造方法都有的时候先走无参构造: 2. Ja ...

  8. java序列化和反序列化对象_java中的序列化与反序列化,还包括将多个对象序列化到一个文件中...

    package Serialize; /** * Created by hu on 2015/11/7. */ //实现序列化必须实现的接口,这就是一个空接口,起到标识的作用 import java. ...

  9. java反序列化多个对象_java 序列化与反序列化多个对象 抛出异常

    jdk 1.8 IEDA 设置可以追加写入后,向目标文件序列化多个同一对象,再序列化出来时,因为反序列化时头部信息只读取一次,报出异常. 请问该怎么解决?或者代码写的有问题? import java. ...

最新文章

  1. 为什么要进行数据归一化
  2. SpringBoot整合MQTT服务器实现消息的发送与订阅(推送消息与接收推送)
  3. python怎么去学_Python第一步的学习,前辈告诉你怎么去学
  4. Spring Boot MyBatis配置多种数据库
  5. java网络图片与二进制字符串相互转换
  6. 信息学奥赛一本通 1226:装箱问题 | OpenJudge NOI 4.6 19:装箱问题
  7. Hive UDF 中使用hdfs中的文件
  8. spark中dataframe解析_Spark 结构流处理介绍和入门教程
  9. python用scrapy爬虫豆瓣_Python-用Scrapy爬取豆瓣电影
  10. 【推荐算法】知识驱动的智能化推荐算法(附交流视频和PPT下载链接)
  11. hibernate_Restrictions用法 .
  12. WIN10电脑如何显示控制面板
  13. 黑洞时间公式,为根号内为负是什么意思
  14. 通俗地告诉你:为什么Dijkstra算法是正确的?
  15. QQ获取群链接、二维码
  16. 怎样做好微商 怎样推广引流客源效果好
  17. 逻辑推理判断 —— 每周一测(智者参与)
  18. jenkins+svn+脚本实现CIDI
  19. 数据库笔试面试(第一版)——根据题目完成以下50道SQL语句
  20. Ubuntu出现“dpkg: 依赖关系问题使得libbsd0:i386的配置工作不能继续”错误

热门文章

  1. 异常 Cannot resolve class or package
  2. Tomcat中出现“RFC 7230 and RFC 3986“错误的解决方法
  3. IDEA——找不到或无法加载主类的一种暴力解决方法
  4. 我所碰到的面试题之------前端常见浏览器兼容性问题解决方案---
  5. 共享打印机出错,错误代码0x00000bcb解决方法汇总
  6. 我应该如何处理MySQL中的--secure-file-priv?
  7. ArrayList和Vector有什么区别?
  8. 什么是TypeScript?为什么我要用它代替JavaScript? [关闭]
  9. 如何检查JavaScript中的数字是否为NaN?
  10. 如何在XML中注释掉一个标签块?