1 一.结构体转Json2

3 public structFaceLibrary4 {5 public stringface_name;6 public byte[] face_Feature;7 }8

9 //序列化结构体

10 facelibrary = newFaceLibrary();11 facelibrary.face_name = "zhangsan";12 facelibrary.face_Feature = new byte[] { 0xaa, 0x22, 0x36, 0x45, 0xff};13

14 MemoryStream stream1 = newMemoryStream();15 DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(FaceLibrary));16 ser.WriteObject(stream1, facelibrary);17 stream1.Position = 0;18 StreamReader sr = newStreamReader(stream1);19 Console.Write("JSON form of Person object:");20 Console.WriteLine(sr.ReadToEnd());21

22 //打印结果:

23 JSON form of Person object: [{"face_Feature":[170,34,54,69,255],"face_name":"zhangsan"}24

25 //反序列化结构体

26 stream1.Position = 0;27 FaceLibrary p2 =(FaceLibrary)ser.ReadObject(stream1);28 Console.WriteLine(p2.face_name);29 Console.WriteLine(p2.face_Feature);30 //输出结果:

31 wangjin0132 System.Byte[]33

34 说明: 通过如上操作,能够将结构体的数据转为Json数据35

36

37 方法二: 将List结构的数据转为Json数据38

39 public structFaceLibrary40 {41 public stringface_name;42 public byte[] face_Feature;43 }44

45 List listfacex = new List();46

47 //序列化List

48 facelibrary = newFaceLibrary();49 facelibrary.face_name = "zhangsan01";50 facelibrary.face_Feature = new byte[] { 0xaa, 0x22, 0x36, 0x45, 0xff};51 listfacex.Add(facelibrary);52

53 facelibrary.face_name = "zhangsan02";54 facelibrary.face_Feature = new byte[] { 0xaa, 0x22, 0x36, 0x45, 0xff};55 listfacex.Add(facelibrary);56

57 facelibrary.face_name = "zhangsan03";58 facelibrary.face_Feature = new byte[] { 0xaa, 0x22, 0x36, 0x45, 0xff};59 listfacex.Add(facelibrary);60

61 facelibrary.face_name = "zhangsan04";62 facelibrary.face_Feature = new byte[] { 0xaa, 0x22, 0x36, 0x45, 0xff};63 listfacex.Add(facelibrary);64

65 facelibrary.face_name = "zhangsan05";66 facelibrary.face_Feature = new byte[] { 0xaa, 0x22, 0x36, 0x45, 0xff};67 listfacex.Add(facelibrary);68

69 MemoryStream stream1 = newMemoryStream();70 DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List));71 ser.WriteObject(stream1, listfacex);72 stream1.Position = 0;73 StreamReader sr = newStreamReader(stream1);74 Console.Write("JSON form of Person object:");75 Console.WriteLine(sr.ReadToEnd());76

77 //输出结果:

78 JSON form of Person object: [79 {"face_Feature":[170,34,54,69,255],"face_name":"zhangsan01"},80 {"face_Feature":[170,34,54,69,255],"face_name":"zhangsan02"},81 {"face_Feature":[170,34,54,69,255],"face_name":"zhangsan03"},82 {"face_Feature":[170,34,54,69,255],"face_name":"zhangsan04"},83 {"face_Feature":[170,34,54,69,255],"face_name":"zhangsan05"}84 ]85

86 //反序列化List

87 stream1.Position = 0;88 List p2 = (List)ser.ReadObject(stream1);89 Console.WriteLine(p2[0].face_name);90 Console.WriteLine(p2[0].face_Feature);91 //输出结果:

92 zhangsan0193 System.Byte[]94

95

96

97 三.测试应用98 /*

99 应用需求:100 1. 通过List将结构体类型的多个数据加载到List中;101 2. 将List数据转为Json数据,并写入到文件中;102 3. 从文件中读取保存的Json数据,并还原成List数据供后续调用;103

104

105 //说明: JavaScriptSerializer 需要导入相应的库,106 命名空间: System.Web.Script.Serialization107 程序集: System.Web.Extensions(位于 System.Web.Extensions.dll)108 参考文件:https://msdn.microsoft.com/zh-cn/library/system.web.script.serialization.javascriptserializer.aspx

109 */

110

111

112 //1.定义结构体和List

113 public structFaceLibrary114 {115 public stringface_name;116 public byte[] face_Feature;117 }118 FaceLibrary facelibrary;119 List listfacex = new List();120

121 //2. 添加数据到List中

122 facelibrary.face_name = "zhangsan01";123 facelibrary.face_Feature = new byte[] { 0xaa, 0x01, 0x11, 0x21, 0xff};124 listfacex.Add(facelibrary);125

126 facelibrary.face_name = "zhangsan02";127 facelibrary.face_Feature = new byte[] { 0xaa, 0x02, 0x12, 0x22, 0xff};128 listfacex.Add(facelibrary);129

130 facelibrary.face_name = "zhangsan03";131 facelibrary.face_Feature = new byte[] { 0xaa, 0x03, 0x13, 0x23, 0xff};132 listfacex.Add(facelibrary);133

134 facelibrary.face_name = "zhangsan04";135 facelibrary.face_Feature = new byte[] { 0xaa, 0x04, 0x14, 0x24, 0xff};136 listfacex.Add(facelibrary);137

138 facelibrary.face_name = "zhangsan05";139 facelibrary.face_Feature = new byte[] { 0xaa, 0x05, 0x15, 0x25, 0xff};140 listfacex.Add(facelibrary);141

142 //3. 将List数据转为Json数据

143 String str =JsonListToString(listfacex);144 //JSON序列化,将List转换为String

145 private String JsonListToString (Listlist)146 {147 JavaScriptSerializer Serializerx = newJavaScriptSerializer();148 string changestr =Serializerx.Serialize(list);149 returnchangestr;150 }151

152 //4. 将Json数据写入文件系统

153 FileWrite("test.txt",str)154 //写入文件

155 private void FileWrite(string filepath,stringwritestr)156 {157 FileStream fs = newFileStream(filepath, FileMode.OpenOrCreate);158 StreamWriter sw = newStreamWriter(fs);159 sw.Write(writestr);160 sw.Close();161 fs.Close();162 }163

164 //5. 从文件中读取Json数据

165

166 string str = FileRead("test.txt");167 //读取文件

168 private string FileRead(stringfilepath)169 {170 FileStream fs = newFileStream(filepath, FileMode.Open);171 StreamReader sr = newStreamReader(fs);172 string str =sr.ReadToEnd();173 sr.Close();174 fs.Close();175 returnstr;176 }177

178 //6. 将Json数据转换为List数据

179

180 List listface =StringToJsonList(str);181 //JSON反序列化,将List转换为String

182 private List StringToJsonList(stringstr)183 {184 JavaScriptSerializer Serializer = newJavaScriptSerializer();185 List face = Serializer.Deserialize>(str);186 returnface;187 }188

189

190 //以上方法基本能够解决上述问题;191

192

193

194

195

196

197 以上代码基于参考如下代码,198 /*

199 // C#将Json字符串反序列化成List对象类集合200

201 using System.IO;202 using System.Web.Script.Serialization;203 using System.Runtime.Serialization.Json;204 public static List JSONStringToList(this string JsonStr)205 {206

207 JavaScriptSerializer Serializer = new JavaScriptSerializer();208

209 List objs = Serializer.Deserialize>(JsonStr);210

211 return objs;212

213 }214

215 public static T Deserialize(string json)216 {217

218 T obj = Activator.CreateInstance();219 using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))220 {221

222 DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());223

224 return (T)serializer.ReadObject(ms);225 }226

227 }228

229 //好了,我们来测试下230 string JsonStr = "[{Name:'苹果',Price:5.5},{Name:'橘子',Price:2.5},{Name:'柿子',Price:16}]";231 List products = new List();232 products = JSONStringToList(JsonStr);233 //Response.Write(products.Count());234 foreach (var item in products)235 {236 Response.Write(item.Name + ":" + item.Price + "
");237 }238 public class Product239 {240 public string Name { get; set; }241 public double Price { get; set; }242 }243 结果:244 苹果:5.5245 橘子:2.5246 柿子:16247

248 */

249

250

c#往结构体里面读数据_C# 结构体和ListT类型数据转Json数据保存和读取相关推荐

  1. 全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析

    全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析 废话先说一点,算了.直接进入正题吧. 用例子说话: JSON数据: string json: " {" ...

  2. c#加入json库引用_C#如何通过匿名类直接使用访问JSON数据详解

    实验目的 在C#和Rest/Restful以及其它的Web服务交互过程中,大量使用到JSON传递数据,如何快捷的转化C#对象到JSON和转化JSON到C#对象,成为开发过程中频繁使用的内容.传统的方式 ...

  3. opc读取ab的plc数据_C#读写 AB PLC 直接通过节点来读写数据 读写 AllenBradley PLC

    本文将使用一个Github开源的组件库技术来读写AB PLC,使用的是基于以太网的实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 本类库绝对是ab最 ...

  4. controller接收json数据_答疑 | 前后端分离,如何接收json数据?

    1.颜老师,在前后端分离的项目中,后端如何接收前端发来的json数据?我记得是@RequestBody,但有时候会报错. 答:当使用SpringMVC接收json数据时,需要区分json的数据格式,具 ...

  5. java中的数据解析是_Java从网络中请求获取JSon数据以及解析JSON数据----(自创,请注明)...

    Json数据是比较常用的数据类型解析,优点就不多说啦.来看看方法: public static JSONObject getJsonObject(String url) { JSONObject js ...

  6. python爬取json数据与实际不一样_Python如何爬取Json数据

    Python如何爬取Json数据 发布时间:2020-12-08 09:52:09 来源:亿速云 阅读:58 作者:小新 这篇文章将为大家详细讲解有关Python如何爬取Json数据,小编觉得挺实用的 ...

  7. 串口发数据到android数据错误,51单片机通过蓝牙串口模块发送JSON数据给安卓手机故障解决办法...

    原标题:51单片机通过蓝牙串口模块发送JSON数据给安卓手机故障解决办法 JSON(Java Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMA (欧洲计 ...

  8. java给第三方接口发送数据_对接第三方接口--使用post请求发送json数据

    对接第三方接口–使用post请求发送json数据 实习4个多月,终于转正!终于可以安心好好上班,好好学习!第一篇播客记录下工作中的中的小知识点. 本文记录的内容如下: 1.使用HttpClient相关 ...

  9. c# 向mysql插入数据_C#连接mysql数据库 及向表中插入数据的方法

    mysql 语句操作: 创建数据库:create database hotelATMDb; use hotelATMDb; C#连接mysql 1.引用 dll MySql.Data.dll 下载地址 ...

最新文章

  1. solaris下ftp配置说明
  2. Consul入门06 - 键/值对数据
  3. VTK:图像亮度用法实战
  4. [android] 解决DatePickerDialog和TimePickerDialog控件取消按钮问题
  5. Codeforces第一次rated比赛
  6. 详解CSS的相对定位和绝对定位
  7. optparse的模块编译参数使用
  8. [转]《帮我买个单》
  9. ReultSet有什么作用和使用
  10. MFS 高可用存储分布式文件系统
  11. 使用Sigar采系统信息
  12. vue后台管理框架(iview + vue)
  13. centos7开启网卡功能
  14. cortex a8 java_ARM Cortex-
  15. 史上最全各种简历模板,自荐信模板和面试技巧
  16. 实时数据库简介和比较
  17. VUE解决IE不能用的方法
  18. win10设置文件默认打开方式
  19. 新睿云服务器安装Oracle 11g数据库
  20. 2022 学术英语写作(东南大学) 最新Unit 1章节测试答案

热门文章

  1. jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解
  2. Linux软件集成开发环境
  3. C# 模拟鼠标移动和点击(转载)
  4. Java解决上台阶问题
  5. REDIS11_HyperLogLog的概述、基本命令、UV、PV、DAU、MAU、首页UV如何进行统计处理
  6. C语言的指南针——指针与结构体
  7. 2022“杭电杯”中国大学生算法设计超级联赛(8)补题
  8. webflux 文件服务器,WebFlux_RSocket_server
  9. Android USB编程
  10. 秋高气爽,静笃九月禅宗