.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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • listagg oracle10_oracle伪列

    listagg oracle10_oracle伪列oracle函数listagg的使用说明

    2025年9月28日
    3
  • Python 打开文件对话框「建议收藏」

    Python 打开文件对话框「建议收藏」以下内容来自http://interactivepython.org/runestone/static/thinkcspy/GUIandEventDrivenProgramming/02_standard_dialog_boxes.html#file-chooserimporttkinterastkfromtkinterimportfiledialogimportosa…

    2022年8月30日
    2
  • 连接kafka报错:1 partitions have leader brokers without a matching listener「建议收藏」

    连接kafka报错:1 partitions have leader brokers without a matching listener「建议收藏」服务输出部分错误日志截图2020/12/25下午2:32:442020-12-2514:32:44.320WARN[tag-service,,,]1—[ntainer#4-0-C-1]org.apache.kafka.clients.NetworkClient:[ConsumerclientId=consumer-5,groupId=statistic-processor]1partitionshaveleaderbrokerswithoutamatchi

    2022年6月26日
    173
  • python手机编程软件-盘点几个在手机上可以用来学习编程的软件[通俗易懂]

    python手机编程软件-盘点几个在手机上可以用来学习编程的软件[通俗易懂]前天在悟空问答的时候,很荣幸被邀请参加回答“在手机上可以用来学习编程的软件有哪些?”这个问题,当时在回答的首页看到一个头条大微(小小猿爱嘻嘻)的回答,觉得十分受用,在此将其整理好,发布头条给大家学习,希望对大家学习编程有帮助。感谢大佬提供的解答,原文可以点击拓展链接进行查看。学习编程的软件其实挺多的,下面我简单几个可以在手机上编程的软件,主要分为C/C++,Java,Python,前端网页,Lin…

    2025年10月18日
    3
  • 0x80表示什么_0x38是多少

    0x80表示什么_0x38是多少0x800x是C语言中16进制数的表示方法。0x80等于十进制的1280×80在计算机内部表示为10000000字符在计算机中以其ASCII码方式表示, 其长度为1个字节,有符号字符型数取值范围为-128~127,无符号字符型数到值范围是0~255。因此在TurboC语言中,字符型数据在操作时将按整型数处理,如果某个变量定义成char,则表明该变量是

    2025年11月7日
    3
  • ansi编码转换器安卓版_ansi编码批量转换器

    ansi编码转换器安卓版_ansi编码批量转换器这是ansi编码批量转换器,是一款转换器支持多种文字编码格式的软件。软件简介ansi编码批量转换器是款转换器支持多种文字编码格式的软件。可以将txt编码转换成自己手机所支持的编码方式,方便于你手机看小说,让你轻松转换,小说快速观看!软件功能本工具能把字符串(包括汉字)转换成10进制或16进制的ANSI码,以空格分开,另外能把上述格式的10进制或16进制的ANSI码转换成字符串(包括汉字)。相关知识…

    2022年9月23日
    2

发表回复

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

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