Newtonsoft.Json - JObject与JArray总结

Newtonsoft.Json是一款.net下的Json序列化/反序列化库,省去了手动拼Json的麻烦,可以通过官网或者NuGet下载。

JObject是其中比较万金油的一个类,可以在不使用实体类的情况下构建/解析Json。

1.字符串转JObject

引入命名空间:

using Newtonsoft.Json.Linq;

Json数据:

{
    "name": "steam", 
    "games": [
        {
            "name": "The Witcher 3", 
            "price": "63"
        }, 
        {
            "name": "GTA5", 
            "price": "93"
        }
    ], 
    "master": "G pan"
}
            string jsonStr = "{\"name\": \"steam\",\"games\":[{\"name\":\"The Witcher 3\",\"price\":\"63\"},{\"name\":\"GTA5\",\"price\":\"93\"}],\"master\":\"G pan\"}";

            JObject json = JObject.Parse(jsonStr);

            foreach(var item in json)
            {
                Console.WriteLine(item.Key + "," + item.Value);
            }

            Console.WriteLine("-------------------------------"); 
            foreach(var item in json["games"])
            {
                Console.WriteLine(item["name"]);
            }

            Console.WriteLine("-------------------------------");
            Console.WriteLine(json["name"]);
            Console.WriteLine(json["games"][0]["name"]);

            Console.Read();

运行结果:

                                       

从上面的例子可以看出,用JObject.Parse()可以将Json格式的字符串转化为JObject对象,然后分列出了三种情况,遍历该对象,遍历嵌套的Json数据和单独访问其中一个值与嵌套数据中的值,看一眼就明白怎么用了。

2.构建Json对象

JObject json = new JObject { { "name", "steam" }, { "age", "18" } };
Console.WriteLine(json);

Console.WriteLine("--------------------------");
JObject json2 = new JObject { { "name", "basketball" } };
json.Add("爱好", json2);
Console.Write(json);

Console.Read();

上面的例子构建了一个json对象,先输出一遍,再对其嵌套一个json对象,输出如下:

                                                             

上面的代码很简单,可是有个缺陷,如果“爱好”一栏有多个数据,这种写法就不行了,这个时候就该祭出JArray对象。

从名字就可以看出该对象是一个数组,我们将上面的例子改写为:

JObject json = new JObject { { "name", "steam" }, { "age", "18" } };
Console.WriteLine(json);

Console.WriteLine("--------------------------");
JArray jarray = new JArray {
    new JObject { { "name", "basketball" } },
    new JObject { { "name", "football" } },
    ;
json.Add("爱好", jarray);
Console.Write(json);

Console.Read();

运行结果:

                                                 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值