标题可能有点含糊不清

我这个例子的来源是,对方会返回给我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对象的更多相关文章

  1. dynamic获取类型可变的json对象

    使用dynamic获取类型可变的json对象 Dictionary<string, object> dict = new Dictionary<string, object>( ...

  2. js或者jq的string类型或者number类型的相互转换及json对象与字符串的转换

    1.将值乘以1,将string类型转为number类型 //算合计价值function summoney(money) { var zijin = $("#main_xm_dam09&quo ...

  3. 用dynamic的方式来转换Json对象

    来自这里:http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object If you ...

  4. Python中Json对象处理的jsonpath-rw

    这两天在写一个爬虫,需要从网站返回的json数据提取一些有用的数据. 向url发起请求,返回的是response,在python3中,response.content是二进制bytes类型的,需要用d ...

  5. 在ASP.NET MVC中使用Knockout实践01,绑定Json对象

    本篇体验在ASP.NET MVC下使用Knockout,将使用EF Code First创建数据库.最后让Knockout绑定一个Json对象. 创建一个领域模型. namespace MvcAppl ...

  6. json字符串转json对象,json对象转换成java对象

    @RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...

  7. json对象转换

    String modules =...; //json格式的String对象 //String对象转换为JSON格式数组 JSONArray moduleArr=JSONObject.parseArr ...

  8. java利用反射将pojo转为json对象

    最近做以太坊钱包项目需要与前台进行json交互,写一个工具类,经普通javaBean转为json对象 package util; import java.lang.reflect.Field; imp ...

  9. json字符串转成 json对象 json对象转换成java对象

    import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 <dependency> ...

随机推荐

  1. 深入理解Activity -动手写实例来感受Activity的启动模式

    介绍 上篇提到了Activity的任务,任务栈,以及启动模式.对这些概念有了了解以后,自己写一下例子来感受一下,就当作复习和加深印象了.如果对概念不熟悉的可以参考:深入理解Activity-任务,回退 ...

  2. iOS 验证邮箱手机号格式

    做登录界面时,用户在UITextfield中输入输入邮箱账号后,我们应该在本地验证格式是否正确,再将参数传给服务器验证. 最简单的就是利用系统的NSPredicate //利用正则表达式验证 -(BO ...

  3. 数据库性能调优——sql语句优化(转载及整理) —— 篇2

    下面是在网上搜集的一些个人认为比较正确的调优方案,如有错误望指出,定虚心改正 (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中 ...

  4. 同域iframe的高度自适应

    引子 父页面里控制子页面 子页面里控制父页面 一.引子 我们先看一个示例,有两个页面,1.html通过iframe嵌入2.html,两个页面都是同域的 1.html <!DOCTYPE html ...

  5. 机器学习六--K-means聚类算法

    机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...

  6. PHP笔记(PHP高级篇)

    高级篇中将涉及数据库的使用以及Cookie和Session会话,提高PHP的开发效率和运行效率 PHP程序员需要掌握的MySQL操作 为项目设计表 使用SQL语句 MySQL的目录结构 data目录中 ...

  7. Tip和菜单的实现方式

    Tip和菜单有类似的功能,即鼠标光标移上去的时候显示指定元素,鼠标光标离开的时候隐藏该元素.如下 示例1:下拉菜单(鼠标移动到“客户服务”上时出现,离开则隐藏) 示例2:水平菜单(鼠标移动到“餐饮美食 ...

  8. ubuntu + hadoop2.5.2分布式环境配置

    ubuntu + hadoop2.5.2分布式环境配置 我之前有详细写过hadoop-0.20.203.0rc1版本的环境搭建 hadoop学习笔记——环境搭建 http://www.cnblogs. ...

  9. ubuntu更新删除旧内核的shell脚本

    ubuntu经常提示要更新内核,更新几次后 /boot目录就满了,再更新就提示目录没空间了,这时候就需要删除不用的老旧内核,之前都是uname, grep, dpkg之类的命令一条条敲,然后用眼睛看需 ...

  10. css shorthand属性简写

    一.什么是shorthand 属性简写(shorthand)就是一次性声明一组相关的属性.好处呢当然是众所周知的,让css从臃肿无序升级为简洁有效具有高可读性. 大多数的人都使用属性简写,我也用,但是 ...