网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和我一样开始不会的朋友。
一、C#处理简单json数据
json数据:

{"result":"0","res_info":"ok","queryorder_info":"info"}

我这里是以jsonmy1.txt文件的形式保存在d盘json文件夹下。

构造对象:

 public struct ToJsonMy{public string result { get; set; }  //属性的名字,必须与json格式字符串中的"key"值一样。public string res_info { get; set; }public string queryorder_info { get; set; }  }

public static void JsonMy()
{string json = Jsonstr("D:\\json\\jsonmy1.txt");//Jsonstr函数读取json数据的文本txt                JavaScriptSerializer js = new JavaScriptSerializer();   //实例化一个能够序列化数据的类ToJsonMy list = js.Deserialize<ToJsonMy>(json);    //将json数据转化为对象类型并赋值给liststring result = list.result;             string res_info = list.res_info;string queryorder_info = list.res_info;
}

二、C#处理包含对象的json数据
json数据:jsonmy2.txt

{"result":"0","res_info":"ok","queryorder_info":{"order_num":"5","orderdetail":"ok"}}

构造对象:

public struct ToJsonMy2
{public string result { get; set; } public string res_info { get; set; }public queryorder_info queryorder_info;
}
public struct queryorder_info
{public string order_num { get; set; }public string orderdetail { get; set; }
};

转换过程:

public static void JsonMy2()
{string json = Jsonstr("D:\\json\\jsonmy2.txt");JavaScriptSerializer js = new JavaScriptSerializer();   //实例化一个能够序列化数据的类ToJsonMy2 list = js.Deserialize<ToJsonMy2>(json);    //将json数据转化为对象类型并赋值给liststring result = list.result;   string res_info = list.res_info;string order_num = list.queryorder_info.order_num;string orderdetail = list.queryorder_info.orderdetail;
}

三、C#处理包含对象、数组的json数据
json数据:jsonmy4.txt

{"result":"0","res_info":"ok","queryorder_info":{"order_num":"5","orderdetail":[{"CFTUin":"769839263","CancelDeadline":"2013-09-12 23:00:00","CheckInDate":"2013-09-12 00:00:00","CheckOutDate":"2013-09-13 00:00:00","CityID":"0101","CurrencyCode":"RMB","HotelID":"00301105","HotelName":"乐家连锁(北京天坛南门店)(原速8酒店(北京天坛南门店)","ListID":"1000000005201308280002999652","PayAmt":"228","PayType":"0","RommsCnt":"1","SPTransID":"65202157","State":"4"},{"CFTUin":"248486133","CancelDeadline":"2013-10-13 23:00:00","CheckInDate":"2013-10-13 00:00:00","CheckOutDate":"2013-10-18 00:00:00","CityID":"0201","CurrencyCode":"RMB","HotelID":"10201314","HotelName":"上海凯顿酒店","ListID":"1000000005201308280002999413","PayAmt":"1140","PayType":"0","RommsCnt":"1","SPTransID":"65197226","State":"4"}]}}

构造对象:

public struct ToJsonMy3
{public string result { get; set; }public string res_info { get; set; }public queryorder_info queryorder_info;
}
public struct queryorder_info
{public string order_num { get; set; }public List<orderdetail> orderdetail;//数组处理
};
public struct orderdetail
{public string CFTUin { get; set; }public string CancelDeadline { get; set; }public string CheckInDate { get; set; }public string CheckOutDate { get; set; }public string CityID { get; set; }public string CurrencyCode { get; set; }public string HotelID { get; set; }public string HotelName { get; set; }public string ListID { get; set; }public string PayAmt { get; set; }public string PayType { get; set; }public string RommsCnt { get; set; }public string SPTransID { get; set; }public string State { get; set; }
};

转换过程:

public static void JsonMy4()
{string json = Jsonstr("D:\\json\\jsonmy4.txt");JavaScriptSerializer js = new JavaScriptSerializer();   //实例化一个能够序列化数据的类ToJsonMy3 list = js.Deserialize<ToJsonMy3>(json);    //将json数据转化为对象类型并赋值给liststring result = list.result;    string res_info = list.res_info;string order_num = list.queryorder_info.order_num;List<orderdetail> orderdetail = list.queryorder_info.orderdetail;string CFTUin = orderdetail[0].CFTUin;string HotelName = orderdetail[0].HotelName;string ListID = orderdetail[1].ListID;string State = orderdetail[2].State;
}

以上代码来自:http://www.jb51.net/article/48027.htm

在项目中也遇到了使用JSON的情况,就把转化过程写一下。

1.从数据库获取的json数据为:

[{"ACTIONVALUE":"-1","CONTENT":"","DEVID":"30000449636001","DEVNAME":"#1空调","DEVTYPE":"46","EVENTTYPE":"","GRIDCODE":"","ISAUTO":"false","MEASURENAME":"通用.低风","MEASURETAG":"GEN.CtrlLowWind","STREAMTYPE":null,"TIMESPAN":""},{"ACTIONVALUE":"0","CONTENT":"","DEVID":"30000449660712","DEVNAME":"#1风机","DEVTYPE":"56","EVENTTYPE":"","GRIDCODE":"","ISAUTO":"false","MEASURENAME":"风机开关","MEASURETAG":"GEN.UnibitCtrl","STREAMTYPE":null,"TIMESPAN":""},{"ACTIONVALUE":"1","CONTENT":"","DEVID":"30000449660710","DEVNAME":"#1警笛","DEVTYPE":"57","EVENTTYPE":"","GRIDCODE":"","ISAUTO":"false","MEASURENAME":"警笛开关","MEASURETAG":"GEN.UnibitCtrl","STREAMTYPE":null,"TIMESPAN":""},{"ACTIONVALUE":"1","CONTENT":"","DEVID":"30000449660708","DEVNAME":"#1灯光","DEVTYPE":"45","EVENTTYPE":"","GRIDCODE":"","ISAUTO":"true","MEASURENAME":"灯光开光","MEASURETAG":"GEN.UnibitCtrl","STREAMTYPE":null,"TIMESPAN":""},{"ACTIONVALUE":"66","CONTENT":"","DEVID":"30000449667767","DEVNAME":"hik1","DEVTYPE":"49","EVENTTYPE":"","GRIDCODE":"110100000103010001","ISAUTO":"true","MEASURENAME":"","MEASURETAG":"GEN.PreSet","STREAMTYPE":"150","TIMESPAN":""},{"ACTIONVALUE":"-1","CONTENT":"","DEVID":"30000449667767","DEVNAME":"hik1","DEVTYPE":"49","EVENTTYPE":"","GRIDCODE":"110100000103010001","ISAUTO":"true","MEASURENAME":"","MEASURETAG":"GEN.VideoRecord","STREAMTYPE":"150","TIMESPAN":""}]

2.构造实体对象:

 public class ActionParam{//[{"ACTIONVALUE":"1","CONTENT":"","DEVID":"30000449660708","DEVNAME":"#1灯光","DEVTYPE":"45","EVENTTYPE":"","GRIDCODE":"","ISAUTO":"true","MEASURENAME":"灯光开光","MEASURETAG":"GEN.UnibitCtrl","STREAMTYPE":null,"TIMESPAN":""}]public int ACTIONVALUE { get; set; }public string CONTENT { get; set; }public string DEVID { get; set; }public string DEVNAME { get; set; }public string DEVTYPE { get; set; }public string EVENTTYPE { get; set; }public string GRIDCODE { get; set; }public bool ISAUTO { get; set; }public string MEASURENAME { get; set; }public string MEASURETAG { get; set; }public string STREAMTYPE { get; set; }public string TIMESPAN { get; set; }}

3.转化为C#中声明的数据格式:

 JavaScriptSerializer js = new JavaScriptSerializer();   //实例化一个能够序列化数据的类List<ActionParam> listDetail = js.Deserialize<List<ActionParam>>(actionParam);

以为json字符串是数组格式,所以js.Deserialize<T>()泛型中使用List<ActionParam>.

转载于:https://www.cnblogs.com/zhangyuanbo12358/p/5590194.html

C#处理JSON 数据相关推荐

  1. python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)

    前言 之前在实际的项目研发中,需要对一些复杂的json数据进行取值操作,由于json数据的层级很深,所以经常取值的代码会变成类似这样: value = data['store']['book'][0] ...

  2. 深入分析jquery解析json数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: {"comments":[{& ...

  3. JSon数据查询---Jlinq

    LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作 ...

  4. java json发送文件_关于java:REST API设计在同一请求中将JSON数据和文件发送到api...

    我正在现有应用程序之上创建一个RESTAPI.其中一个特性接受JSON数据以及用户上传的文件. 我不确定如何将同一请求中的文件和JSON数据发送到RESTAPI? 我让JSON部件工作,并使用curl ...

  5. C++通过HTTP请求Get或Post方式请求Json数据(转)

    原文网址:https://www.cnblogs.com/shike8080/articles/6549339.html #pragma once #include <iostream> ...

  6. AngularJS学习笔记(3)——通过Ajax获取JSON数据

    通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app=&quo ...

  7. php JSON数据格式化输出方法

    php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...

  8. Web 开发人员必备的随机 JSON 数据生成工具

    在 Web 开发中,经常会需要一些测试数据来测试接口或者功能时候正确.JSON Generator 就是这样一款生成随机 JSON 数据的在线工具,Web 开发人员必备,记得收藏和分享啊. 您可能感兴 ...

  9. Android之解析Android Map地图返回的Json数据

    先上一下需要解析的Json数据: {    "results" : [       {          "address_components" : [   ...

  10. [IOS]UIWebView实现保存页面和读取服务器端json数据

    如何通过viewView保存访问过的页面?和如何获取并解析服务器端发送过来的json数据?通过一个简单的Demo来学习一下吧! 操作步骤: 1.创建SingleViewApplication应用,新建 ...

最新文章

  1. PgSQL · 特性分析 · full page write 机制
  2. mysql查询指定日期
  3. swing中怎么在原来图片的基础上切换第二张图片_狂戳痛点!毕业论文图片和公式排版!...
  4. php根据修改时间删除指定目录下文件
  5. 初次使用VS附加到进程功能
  6. 崛起吧,亲爱的,该背单词了!!!
  7. Cannot send session cache limiter - headers already sent问题
  8. android 评价 星星大小,Android RatingBar 评价栏 星星 大小 样式 设置
  9. Redis进阶高可用之主从复制
  10. FreeRTOS源码分析与应用开发11(完):编译、链接与部署
  11. JupyterHub与OpenLDAP集成
  12. web平台安装程序 无效的uri_计算机二级Web(1):Web技术基础(上)
  13. 【智慧城市】GIS数据获取-获取道路/水路数据
  14. 产业区块链一周动态丨数字货币发展写入十四五规划,湖南印发区块链发展规划...
  15. 正则表达式实现中文的大写字符
  16. java中比例尺,地图比例尺换算原理
  17. matlab中syms x是什么意思,matlab中怎样定义未知数,如x,syms是什么意思?
  18. (论文加源码)基于自动编码器和LSTM的脑电情感识别(数据集为DEAP)提取了功率谱密度,并进行了无编码和SVM的对比实验。
  19. 社交 APP 唔哩星球完成数百万元天使轮融资,投资方为启明创投
  20. 微信公众号后台服务开发(一):自动消息回复

热门文章

  1. H.264视频编码在VC++.Net中的实现
  2. [Linux] undefined reference to `itoa'
  3. java实现输出字符串中的数字字符
  4. react学习(22)---需要export
  5. [css] 在sass中可以执行布尔运算吗?
  6. 工作329:uni-数据为空不显示
  7. [css] 使用css写一个垂直翻转图片的效果
  8. “约见”面试官系列之常见面试题之第一百零六篇之css只在当前组件中起作用(建议收藏)
  9. 前端学习(2224):react之函数式组件
  10. 前端学习(2021)vue之电商管理系统电商系统之合并goodlist的分支