C#编程之JSON序列化与反序列化
1、在C#管理NuGet程序包中添加Json.NET
2、C#将对象序列化成JSON字符串
模型类1
/// <summary>
/// JSON字符串模型.是否出错
/// </summary>
public class ErrorModel
{
#region 属性
/// <summary>
/// 是否出错
/// </summary>
public int Error { set; get; }
#endregion
#region 构造函数
/// <summary>
/// 禁止使用空构造函数
/// </summary>
private ErrorModel() { }
/// <summary>
/// 构造函数
/// </summary>
/// <param name="error">错误标识,0表示没有错误,1表示有错误</param>
public ErrorModel(int error)
{
this.Error = error;
}
#endregion
}
模型类2
/// <summary>
/// JSON字符串模型.返回信息
/// </summary>
public class MsgModel
{
#region 属性
/// <summary>
/// 返回信息
/// </summary>
public string Msg { set; get; }
#endregion
#region 构造函数
/// <summary>
/// 禁止使用空构造函数
/// </summary>
private MsgModel() { }
/// <summary>
/// 构造函数
/// </summary>
/// <param name="msg">返回信息,没有错误信息Msg=“Success“,
/// 否则,Msg中包含错误信息。</param>
public MsgModel(string msg)
{
this.Msg = msg;
}
#endregion
}
模型类3
/// <summary>
/// JSON字符串模型.数据
/// </summary>
public class DataModel
{
#region 属性
/// <summary>
/// 返回数据
/// </summary>
public IList<PN_GreDegreeModel> Data { set; get; }
#endregion
#region 构造函数
/// <summary>
/// 禁止使用空构造函数
/// </summary>
private DataModel() { }
/// <summary>
/// 构造函数
/// </summary>
/// <param name="data">返回数据</param>
public DataModel(IList<PN_GreDegreeModel> data)
{
this.Data = data;
}
#endregion
}
生成JSON字符串
/// <summary>
/// 生成JSON字符串
/// </summary>
/// <param name="errorModel">错误编码,0查询成功,1查询失败</param>
/// <param name="msgModel">返回信息,没有错误信息Msg=“Success“,
/// 否则,Msg中包含错误信息。</param>
/// <param name="list">返回数据</param>
/// <returns></returns>
public string createJSON(int error, string msg, IList<PN_GreDegreeModel> list)
{
//定义变量
string data = null;
ArrayList aryList = new ArrayList();
//生成对象
ErrorModel errorModel = new ErrorModel(error);
MsgModel msgModel = new MsgModel(msg);
DataModel dataModel = new DataModel(list);
//装箱
aryList.Add(errorModel);
aryList.Add(msgModel);
aryList.Add(list);
//序列化
data = JsonConvert.SerializeObject(aryList);
return data;
}
3、C#将JSON字符串反序列化成对象
无数组:
//将json字符串转换为对象
JObject jObject = JObject.Parse(s);
有数组:
//将json字符串转换为对象
JObject jObject = (JObject)JsonConvert.Parse(getString);
JArray jar = JArray.Parse(jObject["RTDataSets"].ToString());
//对收到的字符串进行解析
for (int j = 0; j <jar.Count; j++)
{
JObject job = JObject.Parse(jar[j].ToString());
tampAdds = (string)job["kksCode"];
JArray jarr = JArray.Parse(job["RTDataValues"].ToString());
JObject jobs = JObject.Parse(jarr[0].ToString());
value = (double)(jobs["Value"]);
//_dict.Add(add,value);
}
JObject反序列化的是对象{},JArray反序列化的是数组[]。
附加链接:Json.NET Document
C#编程之JSON序列化与反序列化的更多相关文章
- DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...
- C#中JSON序列化和反序列化
有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...
- Newtonsoft.Json 序列化和反序列化 时间格式
From : http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeO ...
- Net中JSON序列化和反序列化处理(日期时间特殊处理)
0 缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...
- Newtonsoft.Json 序列化和反序列化 时间格式 [转]
1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg: A a=new A(); a.Name="Elain ...
- C# JSON 序列化和反序列化——JavaScriptSerializer实现
一. JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.您无法访问序列化程序的此实例.但是,此类公开了公共 API.因此, ...
- 序列化对象C++对象的JSON序列化与反序列化探索
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 一:背景 作为一名C++开发人员,我始终很期待能够像C#与JAVA那样,可以省力的进行对象的序列化与反序列化,但到现在为止,还没有找 ...
- C++对象的JSON序列化与反序列化探索完结-列表的序列化与反序列化
在前两篇文章中,我们已经完成对普通对象以及复杂对象嵌套的序列化与反序列化,见如下地址: C++对象的JSON序列化与反序列化探索 C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化 ...
- C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化
本文是基本上一篇博文进行改进而成,上一篇请见: C++对象的JSON序列化与反序列化探索 此处就不多说了,直接上代码. 1. 序列化基类 #pragma once #include <strin ...
随机推荐
- T4随记
关于T4模板的信息我就不赘述了,百度一大堆 MSDN的介绍 https://msdn.microsoft.com/zh-cn/library/bb126478.aspx 下面是简单的一个示例,从类中获 ...
- VC 函数调用的 汇编代码 浅析
摘要:主要谈谈vc里面函数调用汇编成汇编代码的情形,首先针对之前的一个小程序,说说vc编译器的优化. 例子程序: #include <iostream>using namespace st ...
- 文件识别浅谈(含office文件区分)
前言 本文主要根据后台接口识别Office文件类型这一话题做一些分享,主要方向还是放在不能获取到文件名情况下的Office文件识别. 可获取到文件名 如果后端接口可以获取到完成的文件名称,则整个过程会 ...
- openstack namespace 的应用
查看虚拟机网络连通性 1.neutron port-list | grep IP 2.neutron port-show ID 查看subnet 3.neutron subnet-show ID 查看 ...
- php中使用trait设计单例
trait Singleton { private static $instace = null; private function __construct() { } private functio ...
- 微信小程序地图开发总结
最近在做一个微信小程序地图插件,通过传入起始位置名称和经纬度信息,就可以跳转到路线规划插件页面中,在该页面中,可以根据起始位置查询自驾,公共交通,步行等方式的路线信息,并且在地图上显示路线信息,在这个 ...
- 并发容器之阻塞队列DelayQueue的使用案例及源码分析
原文连接:(http://www.studyshare.cn/blog-front//blog/details/1167/0 ) 一.队列及阻塞队列概念 1.队列:是一种特殊线性表,特殊之处在于操作是 ...
- TCP/IP 第三章
1,ip协议不可靠.无连接特性介绍 不可靠:计算机A往计算机B发送数据报1,若途径的路由器缓存已满,或者ttl(time to live 生存周期)到了,则路由器直接丢弃数据包1,并产生icmp数据包 ...
- 导入lxml找不到etree,报ImportError:DLL load failed:找不到指定的程序
1.是pip install lxml后,安装好了lmx-3.8.0,然后执行sacpy的scrapy crawl jobbole命令报导入lxml的etree无法导入,找不到指定的程序 2.这是因为 ...
- Oracle 聚集函数
(1)avg(x):返回x的平均值 select avg(grade) from sc; (2)count(x):返回统计的行数 select count(name) from sc; (3)max( ...