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. 源码解读·RT-Thread多任务调度算法

    *本文依据RT-Thread当时最新版本4.0.1版本源码 RT-Thread操作系统是一款基于优先级和时间片轮转的多任务实时操作系统.其调度算法采用256个优先级,并支持相同优先级的任务存在.不同优 ...

  2. Python基础,day3

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1.函数基本语法及特性 如何不重复代码,其实很 ...

  3. 网站压力测试工具 Webbench简单介绍

    Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况.Webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量.Webbench不但 ...

  4. 使用 python 提取照片中的手机信息

    使用 python 提取照片中的手机信息 最近在做一个项目,有一个很重要的点是需要获取使用用户的手机信息,这里我选择从照片中获取信息.有人会问为什么不从手机里面直接获取设备信息.由于现在android ...

  5. webapi使用autofac

    注意:您的项目中如果使用的是webapi2,此处必须为webapi2而不是webapi,否则在运行时将出现“重写成员“Autofac.Integration.WebApi.AutofacWebApiD ...

  6. spring boot 2.x 系列 —— spring boot 整合 druid+mybatis

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构 项目查询用的表对应的建表语句放置在resour ...

  7. MxNet 模型转Tensorflow pb模型

    用mmdnn实现模型转换 参考链接:https://www.twblogs.net/a/5ca4cadbbd9eee5b1a0713af 安装mmdnn pip install mmdnn 准备好mx ...

  8. centos7 中安装 htop

    首先启用 EPEL Repository: yum install -y epel-release 启用 EPEL Repository 后, 可以用 yum 直接安裝 Htop: yum insta ...

  9. MySQL 全文索引实现简单版搜索引擎

    目录 前言 使用 三种类型的全文搜索方式 相关参数 测试innodb引擎使用全文索引 准备 使用默认方式创建全文索引 使用ngram分词解析器创建全文索引 结论 前言 只有Innodb和myisam存 ...

  10. MYSQL事务之Yii2.0商户提现

    我是一个半路出家的PHP程序员,到目前为止,不算在培训班学习的时间,已经写代码整整两年了.可能由于工作业务的原因,在这两年中我没有用到过MySQL事务.就在昨天有个关于支付宝转账的业务不得不使用MyS ...