.Net 的动态对象(二)动态解析Json(JObject)

.Net 的动态对象(二)动态解析Json(JObject)

在定义好了对象的类型后,通过NewtonJson我们可以方便的对一个对象进行序列化和反序列化。

在对象里面的属性不好定义,或者不好确定的情况下,我们也可以直接把我们要反序列化的对象当做Objcet处理,但是这样后续的操作就十分的不变,比如你要使用对象里面的某个属性的时候

通过JObject和JArray来动态解析JSON对象,使它很容易创建和检索的JSON内容而无需基础类型

private string str = "{\"platform\":\"all\",\"audience\":{\"tag\":[\"深圳\",\"北京\"]},\"notification\":{\"android\":{\"alert\":\"Hi, JPush!\",\"title\":\"Send to Android\",\"builder_id\":1,\"extras\":{\"newsid\":321}},\"ios\":{\"alert\":\"Hi, JPush!\",\"sound\":\"default\",\"badge\":\"+1\",\"extras\":{\"newsid\":321}}},\"message\":{\"msg_content\":\"Hi,JPush\",\"content_type\":\"text\",\"title\":\"msg\",\"extras\":{\"key\":\"value\"}},\"sms_message\":{\"content\":\"sms msg content\",\"delay_time\":3600},\"options\":{\"time_to_live\":60,\"apns_production\":false,\"apns_collapse_id\":\"jiguang_test_201706011100\"}}"; public void Execute() { //str 是一串结构层级比较多,且Key又不是很确定的Json串,这种情况当然用Objcet可以反序列化、用Dictionary<string,object>也可以, //但肯定都没有JObject方便,特别是在Get、Set的时候 dynamic model = JObject.Parse(str); if (model.audience != null) { var tag = model.audience.tag;//在不定义类型的情况下我们就将tag 属性取出来了,十分的方便 //将我们要赋值的数组转换成JArray 直接赋值就可以了 var tags = new string[] { "x", "y" }; model.audience.tag = JArray.FromObject(tags); // 将我们要赋值的对象转换成JObject 直接赋值就可以了 var datas = new { name = "xx", org="yy" }; model.audience = JObject.FromObject(datas); } }

转载于:https://www.cnblogs.com/PenZ/p/10318220.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101152.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 通过Kivy将Python文件打包成apk

    通过Kivy将Python文件打包成apk一.前言Kivy是一个开源的Python框架,用于快速开发应用,实现各种当前流行的用户界面,比如多点触摸等等。且Kivy可以运行于Windows,Linux,MacOS,Android,iOS等当前绝大部分主流桌面/移动端操作系统。周日在配置Kivy时,教程繁多繁琐,让自己有些找不着北,挨个试后,经常在某处卡壳,屡屡碰壁,希望自己接下来的

    2022年5月20日
    47
  • TabLayout+ViewPager+Fragment实现切页展示「建议收藏」

    TabLayout+ViewPager+Fragment实现切页展示「建议收藏」写在前面目前大多数的APP都采用的是几个Tab标签以及多个界面滑动的形式来提供多层次的交互体验,最为常用的做法就是采用TabLayout+ViewPager+Fragment的方式,最近在公司项目中遇到类似的界面,也看了各个论坛很多份博客,但是发现都没有完全把这种方法的坑填完,因此写下这篇博客,一方面是对知识的总结,另一方面也能让其他开发者们少走一些弯路,博客内容主要分为四个方面:T…

    2022年7月22日
    26
  • 微信小程序带参数跳转页面(小程序跳转第三方网页)

    //wxml&lt;textwx:for="{{titles}}"wx:key="{{index}}"bindtap=’changeClassify’data-id="{{index}}"&gt;{{item.name}}&lt;/text&gt;//jsfunctionchangeClassify(e){//letid=e.currentTarget.da…

    2022年4月12日
    60
  • main方法

    main方法

    2021年9月29日
    63
  • 图像处理入门教程[通俗易懂]

    图像处理入门教程[通俗易懂]  最近有人问我图像处理怎么研究,怎么入门,怎么应用,我竟一时语塞。仔细想想,自己也搞了两年图像方面的研究,做个两个创新项目,发过两篇论文,也算是有点心得,于是总结总结和大家分享,希望能对大家有所帮助。在写这篇教程之前我本想多弄点插图,让文章看起来花哨一点,后来我觉得没必要这样做,大家花时间沉下心来读读文字没什么不好,况且学术和技术本身也不是多么花哨的东西。  一、图像处理的应用  这个其实没什么…

    2022年5月17日
    45
  • linux环境变量的配置_ubuntu设置环境变量

    linux环境变量的配置_ubuntu设置环境变量前言在自定义安装软件的时候,经常需要配置环境变量,下面进行详细解析&nbsp;环境变量配置文件|用户|配置文件||:|:||系统环境|/ect/profil

    2022年7月30日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号