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 = 1;
        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 可以回编译报错:找不到编译动态表达式所需的一个或多个类型。是否缺少引用?

时间: 2024-10-26 09:37:07

Json.net实现方便的Json转C#(dynamic动态类型)对象的相关文章

JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List&lt;T&gt;转JSON,JSON转List&lt;T&gt;,JSON转C#对象

一.JSON解析与字符串化                                                                                            JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 filter,指定要序列化的属性名 indent,格式化为可读的代码,可指定分隔符或指定的缩进空格个数 var man

python对json的相关操作以及json模块的简要分析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成. JSON有两种结构: 第一种就是"名称/值"对的集合.在python中相当于字典类型,在其他语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array). 第二种就是值的有序列表

JSON在线解析,新版本JSON在线解析

SOJSON,出了新版本的JSON在线解析,真的很好用,可以上下版本.左右版本.效果图如下.它的网址是:http://www.sojson.com/simple_json.html SOJSON集成了很多优秀的工具,它的网站:http://www.sojson.com/ JSON在线解析左右版本 JSON在线解析上下版本 JSON在线解析,JSON压缩 JSON在线解析,显示JSON数据类型 JSON在线解析,显示JSON 数组角标 赋值结果,测试Demo json

JS解析json数据(如何将json字符串转化为数组)

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2 <HTML> 3 <HEAD> 4 <TITLE> New Document </TITLE> 5 6 <SCRIPT LANGUAGE="JavaScript"> 7 8 var t="{'firstName': 'cyra', 'lastName':

《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数据,然后通过ajax技术向后台一般处理程序传递JSON,后台又是如何获取传来的JSON,并对JSON数据转换,然后将转换后的数据写入数据库的! 介绍这些步骤实现前,先说说自己的辛酸:絮叨辛酸,是因为为了实现这个功能,我真的用了很

JSON.parse() 方法解析一个JSON字符串

JSON.parse() 方法解析一个JSON字符串,构造由字符串描述的JavaScript值或对象.可以提供可选的reviver函数以在返回之前对所得到的对象执行变换. 语法EDIT JSON.parse(text[, reviver]) 参数 text 要被解析成JavaSctipt值的字符串,查看 JSON 对象学习的JSON 语法的说明. reviver 可选 如果是一个函数,则规定了原始值如何被解析改造,在被返回之前. 返回值 Object对应给定的JSON文本. 异常 若被解析的 J

Qt浅译:JSON Support in Qt(JSON只有六种数据类型)

JSON Support in Qt Qt5之后开始提供对处理JSON数据的支持,JSON是一种Interter数据交换的数据格式. JSON 用于存储结构化的数据,JSON有6种基本数据类型: bool double string array object null All keys in an object are strings, and an object cannot contain any duplicate keys. 在JSON的对象中,所有的键都是字符串,且不能包含重复的字符串

Delphi中JSon SuperObject 使用:数据集与JSON对象互转

在delphi中,数据集是最常用数据存取方式.因此,必须建立JSON与TDataSet之间的互转关系,实现数据之间通讯与转换.值得注意的是,这只是普通的TDataset与JSON之间转换,由于CDS包含了Delta数据包,其数据格式远比普通的TDataset更复杂. 数据集字段信息,是一个完整的字典信息.因此,我们在JSON必须也建立字典信息,才能创建数据集的字段信息.我们设置其JSON信息如下: COLS:[字段列表信息],如: "Cols":[{"JsonType&quo

报org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:的错误

HTTP Status 500 - type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.