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序列化与反序列化的更多相关文章

  1. DotNet的JSON序列化与反序列化

    JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...

  2. C#中JSON序列化和反序列化

    有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...

  3. Newtonsoft.Json 序列化和反序列化 时间格式

    From : http://www.cnblogs.com/litian/p/3870975.html 1.JSON序列化 string JsonStr= JsonConvert.SerializeO ...

  4. Net中JSON序列化和反序列化处理(日期时间特殊处理)

    0  缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...

  5. Newtonsoft.Json 序列化和反序列化 时间格式 [转]

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  6. C# JSON 序列化和反序列化——JavaScriptSerializer实现

    一. JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.您无法访问序列化程序的此实例.但是,此类公开了公共 API.因此, ...

  7. 序列化对象C++对象的JSON序列化与反序列化探索

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 一:背景 作为一名C++开发人员,我始终很期待能够像C#与JAVA那样,可以省力的进行对象的序列化与反序列化,但到现在为止,还没有找 ...

  8. C++对象的JSON序列化与反序列化探索完结-列表的序列化与反序列化

    在前两篇文章中,我们已经完成对普通对象以及复杂对象嵌套的序列化与反序列化,见如下地址: C++对象的JSON序列化与反序列化探索 C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化 ...

  9. C++对象的JSON序列化与反序列化探索续-复杂对象的序列化与反序列化

    本文是基本上一篇博文进行改进而成,上一篇请见: C++对象的JSON序列化与反序列化探索 此处就不多说了,直接上代码. 1. 序列化基类 #pragma once #include <strin ...

随机推荐

  1. T4随记

    关于T4模板的信息我就不赘述了,百度一大堆 MSDN的介绍 https://msdn.microsoft.com/zh-cn/library/bb126478.aspx 下面是简单的一个示例,从类中获 ...

  2. VC 函数调用的 汇编代码 浅析

    摘要:主要谈谈vc里面函数调用汇编成汇编代码的情形,首先针对之前的一个小程序,说说vc编译器的优化. 例子程序: #include <iostream>using namespace st ...

  3. 文件识别浅谈(含office文件区分)

    前言 本文主要根据后台接口识别Office文件类型这一话题做一些分享,主要方向还是放在不能获取到文件名情况下的Office文件识别. 可获取到文件名 如果后端接口可以获取到完成的文件名称,则整个过程会 ...

  4. openstack namespace 的应用

    查看虚拟机网络连通性 1.neutron port-list | grep IP 2.neutron port-show ID 查看subnet 3.neutron subnet-show ID 查看 ...

  5. php中使用trait设计单例

    trait Singleton { private static $instace = null; private function __construct() { } private functio ...

  6. 微信小程序地图开发总结

    最近在做一个微信小程序地图插件,通过传入起始位置名称和经纬度信息,就可以跳转到路线规划插件页面中,在该页面中,可以根据起始位置查询自驾,公共交通,步行等方式的路线信息,并且在地图上显示路线信息,在这个 ...

  7. 并发容器之阻塞队列DelayQueue的使用案例及源码分析

    原文连接:(http://www.studyshare.cn/blog-front//blog/details/1167/0 ) 一.队列及阻塞队列概念 1.队列:是一种特殊线性表,特殊之处在于操作是 ...

  8. TCP/IP 第三章

    1,ip协议不可靠.无连接特性介绍 不可靠:计算机A往计算机B发送数据报1,若途径的路由器缓存已满,或者ttl(time to live 生存周期)到了,则路由器直接丢弃数据包1,并产生icmp数据包 ...

  9. 导入lxml找不到etree,报ImportError:DLL load failed:找不到指定的程序

    1.是pip install lxml后,安装好了lmx-3.8.0,然后执行sacpy的scrapy crawl jobbole命令报导入lxml的etree无法导入,找不到指定的程序 2.这是因为 ...

  10. Oracle 聚集函数

    (1)avg(x):返回x的平均值 select avg(grade) from sc; (2)count(x):返回统计的行数 select count(name) from sc; (3)max( ...