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 ...
随机推荐
- Qt设置窗体的透明度: setWindowOpacity
在Qt中,设置窗体透明度的函数有:void setWindowOpacity(qreal level) 特性: 透明度的有效范围从1.0(完全不透明)到0.0(完全透明的). 默认情况下,此属 ...
- spring之@Value详解(转载)
@Value注入 不通过配置文件的注入属性的情况 通过@Value将外部的值动态注入到Bean中,使用的情况有: 注入普通字符串 注入操作系统属性 注入表达式结果 注入其他Bean属性:注入beanI ...
- 30443数据查询语言DQL
5.4 SQL的数据查询功能 数据查询是数据库最常用的功能.在关系数据库中,查询操作是由SELECT语句来完成.其语法格式如下: SELECT column_expression FROM table ...
- sso和oauth2.0的简单了解学习
sso,单点登录,single sign on 缩写.sso多用于多个应用之间的切换,例如百度论坛.百度知道.百度云.百度文库等,在其中一个系统中登录,(登录有效期内)切换到另一个系统的时候,不必再次 ...
- zphp源码分析(一)
zphp是一款轻量级的php服务端框架,是swoole官方开发的.可以用来开发web应用和网络服务. 安装: 可以通过composer安装, { "require": { &quo ...
- selenium3+python3自动化测试学习之网页元素定位
selenium基础实战之定位网页元素技巧 selenium定位网页元素 find_element_by_id,find_element_by_name,find_element_by_class_n ...
- 吐槽:那些Java设计中不得不说的槽点
1. 求长度各有千秋 你是否曾经在面试的时候,经常被问到:数组有没有 length() 方法?字符串有没有 length() 方法? 集合有没有 length() 方法? 面对这个问题,那么不得不吐槽 ...
- 【HDU - 3085】Nightmare Ⅱ(bfs)
-->Nightmare Ⅱ 原题太复杂,直接简单的讲中文吧 Descriptions: X表示墙 .表示路 M,G表示两个人 Z表示鬼 M要去找G但是有两个鬼(Z)会阻碍他们,每一轮都是M和G ...
- leadcode的Hot100系列--78. 子集--位运算
看一个数组的子集有多少,其实就是排列组合, 比如:[0,1] 对应的子集有:[] [0] [1] [1,1] 这四种. 一般对应有两种方法:位运算 和 回溯. 这里先使用位运算来做. 位运算 一个长度 ...
- Codeforces Gym100543L:Outer space invaders(区间DP)
题目链接 题意 有n个人,每个人有一个出现时间a和一个开枪时间b和一个距离d,在任意一个时刻,你可以选择炸人,你要炸一个人的花费是和他的距离d,并且所有的已经出现并且还没开枪的和你距离<=d的人 ...