zoukankan      html  css  js  c++  java
  • JObject、JArray对JSON操作

      增删改查:

    复制代码
    var cardJson = "['身份证','银行卡','门禁卡']";
                var cardJArray = JArray.Parse(cardJson);
    
            </span><span style="color: #0000ff;">var</span> p = <span style="color: #0000ff;">new</span> Person { Name=<span style="color: #800000;">"</span><span style="color: #800000;">fan</span><span style="color: #800000;">"</span>,Age=<span style="color: #800080;">12</span>,Dog=<span style="color: #0000ff;">new</span> Dog { Name=<span style="color: #800000;">"</span><span style="color: #800000;">奶牛</span><span style="color: #800000;">"</span><span style="color: #000000;">} };
            </span><span style="color: #0000ff;">var</span> pJson =<span style="color: #000000;"> JsonConvert.SerializeObject(p);
            
            JObject jobj </span>=<span style="color: #000000;"> JObject.Parse(pJson);
            
            </span><span style="color: #008000;">//</span><span style="color: #008000;">添加属性</span>
            jobj[<span style="color: #800000;">"</span><span style="color: #800000;">NickName</span><span style="color: #800000;">"</span>] = <span style="color: #800000;">"</span><span style="color: #800000;">fan</span><span style="color: #800000;">"</span><span style="color: #000000;">;
            jobj[</span><span style="color: #800000;">"</span><span style="color: #800000;">Wifes</span><span style="color: #800000;">"</span>] = <span style="color: #0000ff;">new</span> JArray(<span style="color: #800000;">"</span><span style="color: #800000;">rose</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">lisa</span><span style="color: #800000;">"</span><span style="color: #000000;">);
            ((JArray)jobj[</span><span style="color: #800000;">"</span><span style="color: #800000;">Wifes</span><span style="color: #800000;">"</span>]).Add( <span style="color: #800000;">"</span><span style="color: #800000;">july</span><span style="color: #800000;">"</span><span style="color: #000000;">);
            jobj[</span><span style="color: #800000;">"</span><span style="color: #800000;">Cards</span><span style="color: #800000;">"</span>] =<span style="color: #000000;"> cardJArray;
            </span><span style="color: #008000;">//</span><span style="color: #008000;">修改属性</span>
            jobj[<span style="color: #800000;">"</span><span style="color: #800000;">Name</span><span style="color: #800000;">"</span>] = <span style="color: #800000;">"</span><span style="color: #800000;">li</span><span style="color: #800000;">"</span><span style="color: #000000;">;
            jobj[</span><span style="color: #800000;">"</span><span style="color: #800000;">Age</span><span style="color: #800000;">"</span>] = <span style="color: #800080;">9</span><span style="color: #000000;">;
            jobj[</span><span style="color: #800000;">"</span><span style="color: #800000;">Dog</span><span style="color: #800000;">"</span>][<span style="color: #800000;">"</span><span style="color: #800000;">Name</span><span style="color: #800000;">"</span>] = <span style="color: #800000;">"</span><span style="color: #800000;">阿黄</span><span style="color: #800000;">"</span><span style="color: #000000;">;
            ((JArray)jobj[</span><span style="color: #800000;">"</span><span style="color: #800000;">Wifes</span><span style="color: #800000;">"</span>])[<span style="color: #800080;">0</span>] = <span style="color: #800000;">"</span><span style="color: #800000;">roses</span><span style="color: #800000;">"</span><span style="color: #000000;">;
            </span><span style="color: #008000;">//</span><span style="color: #008000;">插入属性</span>
            jobj.Property(<span style="color: #800000;">"</span><span style="color: #800000;">Name</span><span style="color: #800000;">"</span>).AddBeforeSelf(<span style="color: #0000ff;">new</span> JProperty(<span style="color: #800000;">"</span><span style="color: #800000;">ID</span><span style="color: #800000;">"</span>, <span style="color: #800080;">1</span><span style="color: #000000;">));
            </span><span style="color: #008000;">//</span><span style="color: #008000;">删除属性</span>
            jobj.Property(<span style="color: #800000;">"</span><span style="color: #800000;">Age</span><span style="color: #800000;">"</span><span style="color: #000000;">).Remove();
            ((JArray)jobj[</span><span style="color: #800000;">"</span><span style="color: #800000;">Wifes</span><span style="color: #800000;">"</span>])[<span style="color: #800080;">2</span><span style="color: #000000;">].Remove();
            </span><span style="color: #008000;">//</span><span style="color: #008000;">查找
            </span><span style="color: #008000;">//</span><span style="color: #008000;">遍历属性</span>
            <span style="color: #0000ff;">var</span> props =<span style="color: #000000;"> jobj.Children().Values();
            </span><span style="color: #0000ff;">foreach</span> (<span style="color: #0000ff;">var</span> prop <span style="color: #0000ff;">in</span><span style="color: #000000;"> props)
            {
                </span><span style="color: #0000ff;">if</span> (!(prop <span style="color: #0000ff;">is</span> JObject) &amp;&amp; !(prop <span style="color: #0000ff;">is</span><span style="color: #000000;"> JArray))
                {
                    Console.WriteLine(prop.ToString());
                }               
            }
            </span><span style="color: #008000;">//</span><span style="color: #008000;">遍历数组</span>
            <span style="color: #0000ff;">var</span> cardList = ((JArray)jobj[<span style="color: #800000;">"</span><span style="color: #800000;">Cards</span><span style="color: #800000;">"</span><span style="color: #000000;">]);
            </span><span style="color: #0000ff;">foreach</span> (<span style="color: #0000ff;">var</span> card <span style="color: #0000ff;">in</span><span style="color: #000000;"> cardList)
            {
                Console.WriteLine(card.ToString());
            }
            </span><span style="color: #008000;">//</span><span style="color: #008000;">强类型读取</span>
            Console.WriteLine(jobj.Value&lt;<span style="color: #0000ff;">int</span>&gt;(<span style="color: #800000;">"</span><span style="color: #800000;">ID</span><span style="color: #800000;">"</span><span style="color: #000000;">)); 
            </span><span style="color: #0000ff;">var</span> p2 = jobj.ToString();</pre>
    
    复制代码

    对象->JObject->JSON:

    复制代码
    var json = new JObject(
            new JProperty("status", result.Status.ToString()),
            new JProperty("results", new JObject(result.Entries.Select(pair =>
                new JProperty(pair.Key, new JObject(
                    new JProperty("status", pair.Value.Status.ToString()),
                    new JProperty("description", pair.Value.Description),
                    new JProperty("data", new JObject(pair.Value.Data.Select(
                        p => new JProperty(p.Key, p.Value))))))))));
    

    var str = json.ToString();

    复制代码

    JObject合并:

    jObj.Merge(JObject.Parse(userTranslate.ValueJSON));

    JObject查找:

    jObject.SelectToken($".{path}");//根据路径查找
  • 相关阅读:
    C#使用Selenium实现QQ空间数据抓取 说说抓取
    C#使用Selenium实现QQ空间数据抓取 登录QQ空间
    [bug系列]Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommandBuilderFactory
    【原创】CA证书申请+IIS配置HTTPS+默认访问https路径
    【原创】MVC项目中使用JQuery的upladify图片上传插件相关问题的解决方案
    Jquery中$.ajax()方法参数详解
    开发IOS应用真的一定要买苹果电脑设备吗?
    vim全选内容命令
    配置jdk环境变量
    mysql联查中使用if和group by会让你的结果不是你想要的
  • 原文地址:https://www.cnblogs.com/owenzh/p/13408743.html
Copyright © 2011-2022 走看看