使用dynamic获取类型可变的json对象
标题可能有点含糊不清
我这个例子的来源是,对方会返回给我json,不过成功的json与失败的json是不同的对象
我想用一个方法获取到这个对象的所有属性并打印到log中
因为是动态变化的,所以第一个想到的就是用dynamic
下面是dynamic例子
List<dynamic> lst = new List<dynamic>() { new { aa = , bb = "" } };
Type type = lst[].GetType();
var ps = type.GetProperties();
这样是可以取到属性的,但是(总有个但是)
string json = "{\"banme\":\"asd\"}";
dynamic dobj = JsonConvert.DeserializeObject(json, typeof (object)) as dynamic;
var s = dobj.GetType().GetProperties();
var i = dobj.banme;
这个反序列回来的对象,我们是可以获取到banme属性的值asd的,但是当我们去s里查看属性的时候,却没有banme这个属性,仔细看了一下dobj的属性是 dobj.GetType() {Newtonsoft.Json.Linq.JObject} dynamic {System.RuntimeType}
只是我们用了dynamic动态获取到了那个banme属性的值
暂时还没找到获取动态属性的方法
所以我采用的下一种方法
JavaScriptSerializer siSerializer=new JavaScriptSerializer();
dynamic dobj2 = siSerializer.Deserialize<dynamic>(json);
foreach (var ss in dobj2.Keys)
{
var ii = dobj2[ss];
}
微软的这个json序列化工具,反序列化回来一个键值对的对象,那么只要遍历keys就可以获取的他的属性啦
这样,我就可以把完全未知的对象属性都记录到日志里了。
到此还不算结束,其实这种方法不好,如果属性也是一个类型,就很难进一步动态获取了,还是直接转成对象,通过对象属性来获取来的实惠。
到此还不算结束,后来我想了一下,既然是记录日志,直接把json记录下来就好了,干嘛转来转去呢……全剧终
使用dynamic获取类型可变的json对象的更多相关文章
- dynamic获取类型可变的json对象
使用dynamic获取类型可变的json对象 Dictionary<string, object> dict = new Dictionary<string, object>( ...
- js或者jq的string类型或者number类型的相互转换及json对象与字符串的转换
1.将值乘以1,将string类型转为number类型 //算合计价值function summoney(money) { var zijin = $("#main_xm_dam09&quo ...
- 用dynamic的方式来转换Json对象
来自这里:http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object If you ...
- Python中Json对象处理的jsonpath-rw
这两天在写一个爬虫,需要从网站返回的json数据提取一些有用的数据. 向url发起请求,返回的是response,在python3中,response.content是二进制bytes类型的,需要用d ...
- 在ASP.NET MVC中使用Knockout实践01,绑定Json对象
本篇体验在ASP.NET MVC下使用Knockout,将使用EF Code First创建数据库.最后让Knockout绑定一个Json对象. 创建一个领域模型. namespace MvcAppl ...
- json字符串转json对象,json对象转换成java对象
@RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...
- json对象转换
String modules =...; //json格式的String对象 //String对象转换为JSON格式数组 JSONArray moduleArr=JSONObject.parseArr ...
- java利用反射将pojo转为json对象
最近做以太坊钱包项目需要与前台进行json交互,写一个工具类,经普通javaBean转为json对象 package util; import java.lang.reflect.Field; imp ...
- json字符串转成 json对象 json对象转换成java对象
import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 <dependency> ...
随机推荐
- R语言学习笔记:向量
向量是R语言最基本的数据类型. 单个数值(标量)其实没有单独的数据类型,它只不过是只有一个元素的向量. x <- c(1, 2, 4, 9) x <- c(x[1:3], 88, x[4] ...
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- Android屏蔽HOME键
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; @Override protected void onCreate(Bund ...
- C标准库<signal.h>实现
本文地址:http://www.cnblogs.com/archimedes/p/c-library-signal.html,转载请注明源地址. 背景知识 signal.h是C标准函数库中的信号处理部 ...
- MyBatis入门(一)---基本使用
一.MyBatis简介 1.1.概述 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. M ...
- IOS MenuController初步了解
IOS MenuController初步了解 默认情况下有以下控件已经支持MenuController. UITextField UITextView UIWebView 让其他控件也支持MenuCo ...
- iOS 抽象工厂模式
iOS 抽象工厂模式 什么是抽象工厂模式 简单了解一下 按照惯例,我们先了解一下什么是抽象工厂模式.抽象工厂模式和工厂方法模式很相似,但是抽象工厂模式将抽象发挥的更加极致,是三种工厂模式中最抽象的一种 ...
- NSDate,NSNumber,NSValue
NSDate #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleas ...
- Java 读取指定目录下的文件名和目录名
需求:读取指定目录下的文件名和目录名 实现如下: package com.test.common.util; import java.io.File; public class ReadFile { ...
- kvm解决1000M网卡问题
1.当我们安装完虚拟机, 发现虚拟机竟然是 100M 网络, 传输速率很低, 那是怎么导致的呢,如何来解决呢? 需要我们修改 vm01.xml 配置文件网卡段,添加如下红色标记行,改 为 e1000, ...