Json.net实现方便的Json转C#(dynamic动态类型)对象
以前需要将一段json字符串转换为C#对象时,一般都是定义一个与之对应的实体类来接收。这样做有一个很大的缺点,就是当字符串特别长,属性特别多,又有嵌套时,手敲这个实体类就非常痛苦。
比如之前做的一个接收百度七天天气预报的API,层层嵌套,很痛苦。
C# 4.0 之后有了动态类型dynamic。用这个东西配合Json.net可以实现不用定义实体类的json转dynamic类型对象。
以下示例需要先引用Newtonsoft.Json.dll
public class Person {
public int Id { get; set; }
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Id = ;
p.Name = "刘备";
//C#对象转Json
string json = JsonConvert.SerializeObject(p);
Console.WriteLine(json); //{"Id":1,"Name":"刘备"} //此处模拟在不建实体类的情况下,反转将json返回dynamic对象
var DynamicObject = JsonConvert.DeserializeObject<dynamic>(json);
Console.WriteLine(DynamicObject.Name); //刘备
Console.ReadKey();
}
}
以上只是借用了一个实体类来获得一个简单的JSON对象。
实际上,可以完全没有这个Person类。
static void Main(string[] args)
{
string json = "{\"Id\":1,\"Name\":\"刘备\",\"Age\":\"22\"}";
//此处模拟在不建实体类的情况下,反转将json返回回dynamic对象
var DynamicObject = JsonConvert.DeserializeObject<dynamic>(json);
Console.WriteLine(DynamicObject.Name); //刘备
Console.ReadKey();
}
如果未引用Microsoft.CSharp.dll,关于动态类型,VS可能会报错。
VS 可以回编译报错:找不到编译动态表达式所需的一个或多个类型。是否缺少引用?
Json.net实现方便的Json转C#(dynamic动态类型)对象的更多相关文章
- Json概述以及python对json的相关操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- WP8解析JSON格式(使用Newtonsoft.Json包)
DOTA2 WebAPI请求返回的格式有两种,一种是XML,一种是JSON,默认是返回JSON格式. 这里举一个简单的解析JSON格式的例子(更多JSON操作): { "response&q ...
- SQL2008使用json.net实现XML与JSON互转
借助CLR,首先实现字符串的互转,然后使用存储过程实现JSON2table public class JsonFunction { /// <summary> ...
- Json——js和C#对Json的操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式.博主记得几年前在华为外包项目中有一个和Android应用交互的需求,Andr ...
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
先看一下我要实现的功能界面: 这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面 ...
- .net动态类型在处理json数据方面的应用
我们在.net中处理json数据时,经常需要定义相应的类.比如json数据:{ "name" : "hello", "age" : 18 } ...
- DataTable转Json字符串(使用Newtonsoft.Json.dll)
DataTable转Json字符串(使用Newtonsoft.Json.dll) 在需要把DataTable转为Json字符串时,自己手动拼接太麻烦,而且容易出错,费时费力,使用Newtonsoft. ...
- 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象
使用 dynamic 标记解析JSON字符串 http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...
随机推荐
- PLSQL_低效SQL的识别和查询汇总(案例)
2014-12-18 Created By BaoXinjian
- [Java] File类的常用操作
package test.file; import java.io.File; import java.io.IOException; public class TestFile { public s ...
- easyUi中的一段漂亮代码之将list转换成tree.
function convert(rows){ function exists(rows, parentId){ for(var i=0; i<rows.length; i++){ if (ro ...
- JavaScript解耦记
有两个页面A.B.页面A调用页面B.B页面还通过异步加载方式包含一个javascipt(例如叫:ClassHeaderEvaluation.js)文件.问题场景:A页面通过异步请求方式请求B,并在B的 ...
- django不要设置datetime字段auto_now=True
django model的datetime字段如果设置了auto_now=True的话,update该记录的时候即使没有更新它的时间字段,它的时间字段依然会执行一遍auto_now,时间会变成当前更新 ...
- python 迭代器、生成器、装饰器
一,迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束.迭代器只能往前不会后退. 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方 ...
- Count the Colors(线段树染色)
Count the Colors Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Submit ...
- js捕获回车事件,并且获取每一条输入内容
<body> <div style="width: 200px; height: 20px;"> <textarea id="inputVa ...
- junit适配器模式应用
适配器模式 定义: 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作: 构成: 目标抽象角色(Target):定义客户要用的特定领 ...
- 通过WebHandler给图片添加水印
图片生成webhandler水印,主要把水印的信息和位置post到webhandler去处理,返回后再div上显示 前台传递水印的信息和位置: /***********提取DIV属性********* ...