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 ...
随机推荐
- iOS密码框实现(二)取消确定按钮
由于将确定按钮去掉了,所以需要重新修改下代码,当输入第四个数字时,自动进入房间. iOS 密码框效果图: 实现方式: 首先声明一个block初始化方法,因为这只是个框框,并不需要处理网 ...
- JAVA命令运行cmd命令得到的结果乱码Runtime.getRuntime().exec("");
Process process = Runtime.getRuntime().exec("cmd /c dir c:"); BufferedReader bufferedReade ...
- kubernetes实战篇之通过api-server访问dashboard
系列目录 前面一节我们介绍了如何使用kube-proxy搭建代理访问dashboard,这样做缺点非常明显,第一可以通过http访问,第二是这种方式要启动一个后台进程,如果进程关闭了则不能够访问了,还 ...
- 参数传递机制之JWT
1. 什么是 JWT JWT 其全称为:JSON Web Token,简单地说就是 JSON 在 Web 上的一种带签名的标记形式.官方的定义如下: JSON Web Tokens are an op ...
- Spark学习之路(四)—— RDD常用算子详解
一.Transformation spark常用的Transformation算子如下表: Transformation算子 Meaning(含义) map(func) 对原RDD中每个元素运用 fu ...
- 破坏之王-DDoS攻击与防范深度剖析
破坏之王-DDoS攻击与防范深度剖析 下载:链接:https://pan.baidu.com/s/1bzVT6YkZGGg7anpQWDknjA 提取码:j7ns 网际空间的发展带来了机遇,也带来了威 ...
- python - 博客目录
博客目录 python基础部分 函数 初识函数 函数进阶 装饰器函数 迭代器和生成器 内置函数和匿名函数 递归函数 常用模块 常用模块 模块和包 面向对象 初识面向对象 面向对象进阶 网络编程 网络编 ...
- SPOJ STC02 - Antisymmetry(Manacher算法求回文串数)
http://www.spoj.com/problems/STC02/en/ 题意:给出一个长度为n的字符串,问其中有多少个子串s可以使得s = s按位取反+翻转. 例如样例:11001011. 10 ...
- 虚拟机linux下git clone 报SSL connect error错误
今天在安装azkaban时,用git clone https://github.com/azkaban/azkaban.git,虚拟机报了SSL connect error,翻了很多博客,有的说是gi ...
- C语言学习书籍推荐《C Primer Plus(中文版)(第5版)》下载
普拉塔 (Prata S.) (作者), 云巅工作室 (译者) <C Primer Plus(中文版)(第5版)>共17章,介绍了C语言的基础知识,包括数据类型.格式化输入输出.运算符.表 ...