c#往结构体里面读数据_C# 结构体和ListT类型数据转Json数据保存和读取
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数据保存和读取相关推荐
- 全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析
全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析 废话先说一点,算了.直接进入正题吧. 用例子说话: JSON数据: string json: " {" ...
- c#加入json库引用_C#如何通过匿名类直接使用访问JSON数据详解
实验目的 在C#和Rest/Restful以及其它的Web服务交互过程中,大量使用到JSON传递数据,如何快捷的转化C#对象到JSON和转化JSON到C#对象,成为开发过程中频繁使用的内容.传统的方式 ...
- opc读取ab的plc数据_C#读写 AB PLC 直接通过节点来读写数据 读写 AllenBradley PLC
本文将使用一个Github开源的组件库技术来读写AB PLC,使用的是基于以太网的实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 本类库绝对是ab最 ...
- controller接收json数据_答疑 | 前后端分离,如何接收json数据?
1.颜老师,在前后端分离的项目中,后端如何接收前端发来的json数据?我记得是@RequestBody,但有时候会报错. 答:当使用SpringMVC接收json数据时,需要区分json的数据格式,具 ...
- java中的数据解析是_Java从网络中请求获取JSon数据以及解析JSON数据----(自创,请注明)...
Json数据是比较常用的数据类型解析,优点就不多说啦.来看看方法: public static JSONObject getJsonObject(String url) { JSONObject js ...
- python爬取json数据与实际不一样_Python如何爬取Json数据
Python如何爬取Json数据 发布时间:2020-12-08 09:52:09 来源:亿速云 阅读:58 作者:小新 这篇文章将为大家详细讲解有关Python如何爬取Json数据,小编觉得挺实用的 ...
- 串口发数据到android数据错误,51单片机通过蓝牙串口模块发送JSON数据给安卓手机故障解决办法...
原标题:51单片机通过蓝牙串口模块发送JSON数据给安卓手机故障解决办法 JSON(Java Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMA (欧洲计 ...
- java给第三方接口发送数据_对接第三方接口--使用post请求发送json数据
对接第三方接口–使用post请求发送json数据 实习4个多月,终于转正!终于可以安心好好上班,好好学习!第一篇播客记录下工作中的中的小知识点. 本文记录的内容如下: 1.使用HttpClient相关 ...
- c# 向mysql插入数据_C#连接mysql数据库 及向表中插入数据的方法
mysql 语句操作: 创建数据库:create database hotelATMDb; use hotelATMDb; C#连接mysql 1.引用 dll MySql.Data.dll 下载地址 ...
最新文章
- solaris下ftp配置说明
- Consul入门06 - 键/值对数据
- VTK:图像亮度用法实战
- [android] 解决DatePickerDialog和TimePickerDialog控件取消按钮问题
- Codeforces第一次rated比赛
- 详解CSS的相对定位和绝对定位
- optparse的模块编译参数使用
- [转]《帮我买个单》
- ReultSet有什么作用和使用
- MFS 高可用存储分布式文件系统
- 使用Sigar采系统信息
- vue后台管理框架(iview + vue)
- centos7开启网卡功能
- cortex a8 java_ARM Cortex-
- 史上最全各种简历模板,自荐信模板和面试技巧
- 实时数据库简介和比较
- VUE解决IE不能用的方法
- win10设置文件默认打开方式
- 新睿云服务器安装Oracle 11g数据库
- 2022 学术英语写作(东南大学) 最新Unit 1章节测试答案
热门文章
- jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解
- Linux软件集成开发环境
- C# 模拟鼠标移动和点击(转载)
- Java解决上台阶问题
- REDIS11_HyperLogLog的概述、基本命令、UV、PV、DAU、MAU、首页UV如何进行统计处理
- C语言的指南针——指针与结构体
- 2022“杭电杯”中国大学生算法设计超级联赛(8)补题
- webflux 文件服务器,WebFlux_RSocket_server
- Android USB编程
- 秋高气爽,静笃九月禅宗