.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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(2)


相关推荐

  • TCP和UDP的区别是什么_那跟哪的区别

    TCP和UDP的区别是什么_那跟哪的区别TCP是传输层协议,定义数据传输和连接方式的规范。握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。HTTP超文本传送协议(HypertextTransferProtocol)是应用层协议,定义的是传输数据的内容的规范。HTTP协议中的数据是利用TCP协议传输的,特点是客户端发送的每次请求都需要服务器回送响应,它是TCP协议族中的一种,默认使用TCP80…

  • Vcl控件详解_c++控件

    Vcl控件详解_c++控件TTabControl属性 DisplayRect:只定该控件客户区的一个矩形HotTrack:设置当鼠标经过页标签时,它的字是否有变化。如果为True,是字会变成蓝色Images:为每个页标签添加一个图片MultiLine:如果总页标签的长度大于该控件的宽度时,是否允许多行显示MultiSelect:是否允许多选页标签。该属性只有当Style为tsFlatButtons或

  • 论文中公式居中编号右对齐_利用制表符将公式居中

    论文中公式居中编号右对齐_利用制表符将公式居中目录方法1:表格法方法2:制表位法新建“样式”批量设置参考资料写论文时,要求公式居中,编号右对齐。刚开始碰到这种问题,很麻烦,网上看了好多方法,目前,两种方法比较实用。第一种是表格法,方便快捷;第二种是制表位法,刚开始设置比较繁琐,一旦设置好了,比表格法速度还要快。个人推荐制表位法,当然,这样看自己的习惯了。下面将依次介绍两种方法实现公式居中,编号右对齐。…

    2022年10月12日
  • 手撸 webpack4.x 配置(二)[通俗易懂]

    手撸 webpack4.x 配置(二)[通俗易懂]接着上一篇手撸webpack4.x配置(一)继续学习webpack配置。今天我学习配置下webpack中另一个模块plugins配置。之前我们都是手动在打包后(dist)目录里手动新建的index.html然后把打包后生成的JS文件手动的引入,今天我们来安装一个插件让webpack自动给我们生成模板!1官网配置地址:html-webpack-p…

  • Java入门基础学习总结[通俗易懂]

    Java入门基础学习总结[通俗易懂]基础(Basics)打开CMD的方式:1.开始+系统+命令提示符2.Win键+R输入cmd打开控制台(推荐使用)3.在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口4.资源管理器的地址栏前面加上cmd一个空格路径常用的Dos命令#盘符切换D:冒号需用英文模式#查看当前目录下的所有文件dir#切换目录cdchangedirectorycd.. 返回上级目录#清理屏幕cls(clearscreen)#退出终端exit#查看电脑的i

  • java long转日期,long转String[通俗易懂]

    java long转日期,long转String[通俗易懂]//long转DateprivateDateLongToDate(longstr){ Datedate=newDate(str*1000); returndate; }//long转StringprivateStringLongToString(longstr){ SimpleDateFormatsdf=newSimpleDateFor…

发表回复

您的电子邮箱地址不会被公开。

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