C# Json反序列化处理
最近换工作了 从客户端转到Web端 第一个任务就是去别人的页面上抓取数据 用到的是JSON 因为他们网站json的格式有点怪 所以 就在JSON反序列化上面 花了一点时间
首先用到的工具是http://www.newtonsoft.com/json(记得引入 using Newtonsoft.Json)
然后 根据JSON创建对应的对象类
最后反序列化打回前台就可以用啦
总结三步:引入-根据json结构创建对象类-反序列化成json
下面分三种JSON形式
Demo1:
JsonStr: "{\"Name\":\"Coffee swirl\",\"Content\":\"the json\"}"
这个是最常见的json格式
对象类:
public class demo1
{
public string Name { get; set; }
public string Content { get; set; }
}
输出:
string jsonStr= "{\"Name\":\"Coffee swirl\",\"Content\":\"the json\"}";
var demo = JsonConvert.DeserializeObject<demo1>(jsonStr);
label1.Text = demo.Name;
Demo2:
json: "{\"List\":[{\"Name\":\"aaa\"},{\"Name\":\"bbb\"},{\"Name\":\"ccc\"}]}"
注意list后面带的是[] ,这表示这是个带数组的json格式
对象类:
public class demo2
{
public List[] List { get; set; }
} public class List
{
public string Name { get; set; }
}
输出:
string json = "{\"List\":[{\"Name\":\"aaa\"},{\"Name\":\"bbb\"},{\"Name\":\"ccc\"}]}";
var demo = JsonConvert.DeserializeObject<demo2>(jsonStr);
string lab = "";
foreach (var d in demo.List)
{
lab += d.Name + " ";
}
label1.Text = lab;
Demo3:
还有一种数组类型:
Json: "[{\"Name\":\"aaa\"},{\"Name\":\"bbb\"},{\"Name\":\"ccc\"}]"
对象类:
public class demo3
{
public string Name { get; set; }
}
输出:
var demo = JsonConvert.DeserializeObject<demo3[]>(json);
string lab = "";
foreach (var d in demo)
{
lab += d.Name + " ";
}
label1.Text = lab;
Demo4:
json:(这个是通过在线格式化工具格式化了一下 这样看起来更加清楚)
[
{
"department": {"leader": "x1","number": "10"},
"worker": [
{"id": "1","name": "aaa1","work": "aaa2"},
{"id": "2","name": "bbb1","work": "bbb2"},
{"id": "3","name": "ccc1","work": "ccc2"}
]
},
{
"department": {"leader": "x2","number": "20"},
"worker": [
{"id": "4","name": "ddd1","work": "ddd2"},
{"id": "5","name": "eee1","work": "eee2"},
{"id": "6","name": "fff1","work": "fff2"}
]
}
]
这是个多层嵌套并且带数组的json格式,也是我遇到的比较复杂的一种
对象类:
public class demo4
{
public department department { get; set; }
public worker[] worker { get; set; }
} public class department
{
public string leader { get; set; }
public string number { get; set; }
} public class worker
{
public int id { get; set; }
public string name { get; set; }
public string work { get; set; }
}
输出:
string jsonStr = "[{\"department\": {\"leader\": \"x1\",\"number\": \"10\"},\"worker\": [{\"id\": \"1\",\"name\": \"aaa1\",\"work\": \"aaa2\"},{\"id\": \"2\",\"name\": \"bbb1\",\"work\": \"bbb2\"},{\"id\": \"3\",\"name\": \"ccc1\",\"work\": \"ccc2\"}]},{\"department\": {\"leader\": \"x1\",\"number\": \"10\"},\"worker\": [{\"id\":\"4\",\"name\": \"ddd1\",\"work\": \"ddd2\"},{\"id\": \"5\",\"name\": \"eee1\",\"work\": \"eee2\"},{\"id\": \"6\",\"name\": \"fff1\",\"work\": \"fff2\"}]}]";
var demo = JsonConvert.DeserializeObject<demo4[]>(jsonStr);
string lab = "";
foreach (var d in demo)
{
lab += "领导:" + d.department.leader + "组员:{";
foreach (var w in d.worker)
{
lab += " " + w.name;
}
lab += "}";
}
label1.Text = lab;
基本就是这样了 可能以后遇到其他类型的json 我还会补全 代码都全部验证无误
C# Json反序列化处理的更多相关文章
- Json反序列化
迟来的Json反序列化 源码发布 搞了一个下午,终于搞定改了这个号称中国的github...以后源码直接在这里发布了(英文实在太烂了) https://code.csdn.net/jy023050 ...
- C#在Json反序列化中处理键的特殊字符
假设有如下Json 数据: 1.{ 2."id" : 1, 3."@value" : "this a @", 4."$p" ...
- C# Json反序列化
Json反序列化有两种方式[本人],一种是生成实体的,方便处理大量数据,复杂度稍高,一种是用匿名类写,方便读取数据,较为简单. 使用了Newtonsoft.Json,可以自行在nuget中导入 Jso ...
- .net Json 反序列化时,属性带点
.net Json 反序列化时,属性带点 使用[JsonProperty("xxx.xxx")] static void Main(string[] args) { string ...
- Newtonsoft.Json反序列化(Deserialize)出错:Bad JSON escape sequence
使用Newtonsoft.Json反序列化收到的字串为JObject或其它支持的数据模型,有时错误,提示如下: Bad JSON escape sequence: \c. Path , positio ...
- C# json反序列化 对象中嵌套数组 (转载) 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
C# json反序列化 对象中嵌套数组 (转载) 看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的 Newtonso ...
- C# Json反序列化 C# 实现表单的自动化测试<通过程序控制一个网页> 验证码处理类:UnCodebase.cs + BauDuAi 读取验证码的值(并非好的解决方案) 大话设计模式:原型模式 C# 深浅复制 MemberwiseClone
C# Json反序列化 Json反序列化有两种方式[本人],一种是生成实体的,方便处理大量数据,复杂度稍高,一种是用匿名类写,方便读取数据,较为简单. 使用了Newtonsoft.Json,可以自 ...
- json-lib json反序列化——日期转换
将json格式的字符串转为对象,其中key-value有将String的日期转为Date类型,怪现象就是,转出来的Date类型的值是当前的系统时间. 网上有许多答案,在反序列化之前需要注册Date解析 ...
- json反序列化与pickle的用法
json反序列化与pickle 一.定义 序列化:将内存中的不可持久化和传输对象转换为可方便持久化和传输对象的过程. 反序列化:将可持久化和传输对象转换为不可持久化和传输对象的过程. 二. 应用场景 ...
随机推荐
- JSON和JAVA的POJO的相互转换【转载】
该类中用用到的jar包:参加文章<使用json-lib进行Java和JSON之间的转换[转载]> import java.util.Collection; import java.util ...
- 【转】SVN:Android Studio设置忽略文件
Android Studio创建的Android项目一般需要忽略 参考: http://blog.csdn.net/qq_22780533/article/details/51965007 1..id ...
- 在Excel中创建和使用ServerDocument
ServerDocument是微软提供的一种读取Word或Excel文档级应用中CachedData的工具.本示例将向你展示如何使用用ServerDocument. 1. 创建文档级应用 打 ...
- 【Oracle】OCR的备份和恢复之导出导入
使用导出导入进行OCR的备份和恢复: 在对集群做调整前.如:增删节点等操作前,应该对OCR进行一次备份.能够使用export备份到指定文件. 实验环境: OS:OEL5.6 RAC:10.2.0.1. ...
- Linux进程间通信——使用数据报套接字
前一篇文章, Linux进程间通信——使用流套接字介绍了一些有关socket(套接字)的一些基本内容,并讲解了流套接字的使用,这篇文章将会给大家讲讲,数据报套接字的使用. 一.简单回顾——什么是数据报 ...
- fork和exec函数
#include<unistd.h> pid_t fork(void); 返回:在子进程中为0,在父进程中为子进程IO,若出错则为- fork最困难之处在于调用它一次,它却返回两次.它在调 ...
- spring core源码解读之ASM4用户手册翻译之一asm简介
第一章:ASM介绍 1.1 ASM动机: 程序的分析,生成,转换技术可以应用到许多场景: 1.程序分析,从简单的语法解析到完整的语义分析,可以应用在程序中找到潜在的bug,发现无用的代码,工程代码的逆 ...
- 安装Oracle数据库和PLSQL连接数据库
首先在Oracle官网上下载: 安装前要注意:将win64_11gR2_database_2of2中的\win64_11gR2_database_2of2\database\stage\Compone ...
- C#泛型的性能优势
我写东西一向追求短小精悍,就不放代码去验证的,只说结论,并会与Java泛型做对比.有不对之处还望指出. 泛型作为一个在C#2.0中就引入的特性,也是C#的重要特性之一,我经常看到有人讨论泛型带来的便捷 ...
- android注解使用详解(图文)
在使用Java的SSH框架的时候,一直在感叹注解真是方便啊,关于注解的原理,大家可以参考我的另一片文章Java注解详解.最近有时间研究了android注解的使用,今天与大家分享一下. android中 ...