不废话,调用代码:

         static void Main(string[] args)
{
string json = File.ReadAllText("2.txt", Encoding.Default); object result = JsonConvert.DeserializeObject(json);
//dynamic result = JsonConvert.DeserializeObject<dynamic>(json); //这行函数 啥用都没有 //虽然 result 是 dynamic 定义, 但其实还是 JObject 类型 —— 这种类型是 Newtonsoft.Json 中的一个实体 //需要对 动态JSON 进行一个 转换
dynamic result2 = JsonObjectToDynamic(result);
dynamic text = result2.DKS.Text;
Console.WriteLine(text); //--------------------------------
//动态对象 测试
dynamic dyna = new DynamicModel();
dyna["Name"] = "张三";
dyna["Birthday"] = new DateTime(, , ); Console.WriteLine(dyna.Name);
Console.WriteLine(dyna.Birthday); }

运行截图:

完整Demo代码:

     class Program
{
static void Main(string[] args)
{
string json = File.ReadAllText("2.txt", Encoding.Default); object result = JsonConvert.DeserializeObject(json);
//dynamic result = JsonConvert.DeserializeObject<dynamic>(json); //这行函数 啥用都没有 //虽然 result 是 dynamic 定义, 但其实还是 JObject 类型 —— 这种类型是 Newtonsoft.Json 中的一个实体 //需要对 动态JSON 进行一个 转换
dynamic result2 = JsonObjectToDynamic(result);
dynamic text = result2.DKS.Text;
Console.WriteLine(text); //--------------------------------
//动态对象 测试
dynamic dyna = new DynamicModel();
dyna["Name"] = "张三";
dyna["Birthday"] = new DateTime(, , ); Console.WriteLine(dyna.Name);
Console.WriteLine(dyna.Birthday); } private static dynamic JsonObjectToDynamic(object jToken)
{
if (jToken == null) return null; if (jToken is JValue)
{
return ((JValue) jToken).Value;
}
else if (jToken is JArray)
{
dynamic list = new List<object>();
JArray array = (JArray)jToken; //JArray
if (array.HasValues)
{
foreach (object item in array) //JToken
{
object value = JsonObjectToDynamic(item);
list.Add(value);
}
}
return list;
}
//else if (string.Equals(typeName, "JContainer", StringComparison.InvariantCultureIgnoreCase)) //JObject JArray JConstructor 都继承自 JContainer
else if (jToken is JContainer)
{
DynamicModel hash = new DynamicModel();
JContainer container = (JContainer)jToken; //JContainer
if (container.HasValues)
{
foreach (JToken item in container) //JToken
{
if (item is JProperty)
{
JProperty itemProperty = (JProperty) item;
if (item.Type == JTokenType.Property)
hash[itemProperty.Name] = JsonObjectToDynamic(itemProperty.Value);
}
else
throw new Exception(string.Format("JsonObjectToDynamic(*) 函数缺陷, 未知类型: " + item.GetType()));
}
}
return hash;
} throw new Exception(string.Format("JsonObjectToDynamic(*) 函数缺陷, 未知类型: " + jToken.GetType()));
}
public class DynamicModel : DynamicObject
{
private Dictionary<string, object> m_Hash = new Dictionary<string, object>();
//private Dictionary<string, object> m_Hash = new Dictionary<string, object>(StringComparer.InvariantCultureIgnoreCase); //不区分大小写 public object this[string key]
{
get
{
object value = null;
m_Hash.TryGetValue(key, out value);
return value;
}
set {
if (m_Hash.ContainsKey(key)) m_Hash[key] = value;
else m_Hash.Add(key, value);
}
} public override bool TryGetMember(GetMemberBinder binder, out object result)
{
string name = binder.Name;
return m_Hash.TryGetValue(name, out result);
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
this[binder.Name] = value;
return true;
}
} }

『动态』动态JSON万能转换函数 + .Net40 dynamic动态数据绑定的更多相关文章

  1. js数组,字符串,json互相转换函数有哪些

    js数组,字符串,json互相转换函数有哪些 一.总结 一句话总结: JSON.stringify(arr) JSON.parse(jsonString) str.split('') array.jo ...

  2. 『审慎』.Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历

    异步Task简单介绍 本标题有点 哗众取宠,各位都别介意(不排除个人技术能力问题) —— 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 —— 异步编 ...

  3. C#动态调用C++编写的DLL函数

    C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C ...

  4. python基础学习Day10 函数形参的动态参数、*args **kwargs 命名空间 global 与 nonlocal

    一.函数形参的动态参数 原因:为了拓展,对于实参数量不固定,故需要万能参数,即动态参数, *args   **kwargs # def sum1(*args): # 在函数定义时,在*位置参数,聚合. ...

  5. 分享基于.NET动态编译&Newtonsoft.Json封装实现JSON转换器(JsonConverter)原理及JSON操作技巧

    看文章标题就知道,本文的主题就是关于JSON,JSON转换器(JsonConverter)具有将C#定义的类源代码直接转换成对应的JSON字符串,以及将JSON字符串转换成对应的C#定义的类源代码,而 ...

  6. OpenLayers学习笔记(十)— 动态加载JSON数据模拟航迹线

    在openlayers 3 上,加载本地json数据,动态绘制航迹线,以飞机当前位置为地图中心,此例子是模拟DEMO 本文链接:动态加载JSON数据模拟航迹线 作者:狐狸家的鱼 GitHub:八至 前 ...

  7. 在C#中,Newtonsoft.Json + dynamic动态解析jsonString,jsonString转实体

    记录一下 引用 using Newtonsoft.Json; using Newtonsoft.Json.Linq; var jsonString = "{\"ApiResourc ...

  8. 『实践』Yalmip获取对偶函数乘子

    『实践』Yalmip获取对偶函数乘子 一.sdpsetting设置 Yalmip网站给出的说明 savesolveroutput默认为0,需要设置为1才会保存输出结果. 下面是我模型的约束个数: 二. ...

  9. 函数的进阶(动态参数,命名空间和作用域,函数的嵌套,gloabal和nonlocal关键字)

    1. 函数参数--动态传参 昨天已经解过了传参, 如果需要给一个函数传参,而参数又是不确定的. 或者我们给一个函数传很多参数, 我的形参就要写很多, 写起来就很麻烦, 这时我们可以考虑使用动态参数.形 ...

随机推荐

  1. 人脸检测? 对Python来说太简单, 调用dlib包就可以完成

    "Dlib 是一个现代化的 C ++ 工具包,包含用于创建复杂软件的机器学习算法和工具 " .它使您能够直接在 Python 中运行许多任务,其中一个例子就是人脸检测. 安装 dl ...

  2. Elasticsearch java api 常用查询方法QueryBuilder构造举例

    转载:http://m.blog.csdn.net/u012546526/article/details/74184769 Elasticsearch java api 常用查询方法QueryBuil ...

  3. Maven打包详细流程

    方法一:cmd 控制台打包(比较不推荐) 首先安装maven插件百度下载一个,配置环境变量什么的~在cmd控制台能mvn version能有数据出现. 打包只需要到项目的根目录下~在cmd敲入mvn ...

  4. 深入理解SpringBoot之自动装配

    SpringBoot的自动装配是拆箱即用的基础,也是微服务化的前提.其实它并不那么神秘,我在这之前已经写过最基本的实现了,大家可以参考这篇文章.这次主要的议题是,来看看它是怎么样实现的,我们透过源代码 ...

  5. 洛谷 P1879 解题报告

    P1879 [USACO06NOV]玉米田Corn Fields 题目描述 农场主\(John\)新买了一块长方形的新牧场,这块牧场被划分成\(M\)行\(N\)列\((1 ≤ M ≤ 12; 1 ≤ ...

  6. R语法学习 第十二篇:因子

    因子(factor)是R语言中比较特殊的一个类型, 它是一个用于存储类别的类型,因子的行为有时像字符串,有时像整数.因子也是一个向量,每个元素都是字符类型.因子具有因子水平(Levels),用于限制因 ...

  7. Python学习 Part7:类

    Python学习 Part7:类 1. 作用域和命名空间 命名空间(namespace)就是一个从名称到对象的映射. 命名空间的一些实例:内置名称集(函数,像abs(),和内置异常名称),一个模块中的 ...

  8. TensorFlow-谷歌深度学习库 文件I/O Wrapper

    这篇文章主要介绍一下TensorFlow中相关的文件I/O操作,我们主要使tf.gfile来完成. Exists tf.gfile.Exists(filename) 用来判断一个路径是否存在,如果存在 ...

  9. Nctf_web_wp

    1.签到题     右键源代码即可2.md5 collision    这个考点是php"=="的弱相等,为何会出现弱加密呢,是因为在比较==两边的时候,会将字符串类型转化为相同, ...

  10. ZooKeeper的使用---Java程序

    一.导入库 以下库存放在目录lib中: audience-annotations-0.5.0.jar jline-0.9.94.jar log4j-1.2.17.jar netty-3.10.6.Fi ...