Newtonsoft.Json之JArray, JObject, JPropertyJValue

时间:2022-09-21 13:59:47

JObject staff = new JObject();

staff.Add(new JProperty("Name", "Jack"));

staff.Add(new JProperty("Age", 33));

staff.Add(new JProperty("Department", "Personnel Department"));

staff.Add(new JProperty("Leader", new JObject(new JProperty("Name", "Tom"), new JProperty("Age", 44), new JProperty("Department", "Personnel Department"))));

Console.WriteLine(staff.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

JArray arr = new JArray();

arr.Add(new JValue(1));

arr.Add(new JValue(2));

arr.Add(new JValue(3));

Console.WriteLine(arr.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

string json = "{\"Name\" : \"Jack\", \"Age\" : 34, \"Colleagues\" : [{\"Name\" : \"Tom\" , \"Age\":44},{\"Name\" : \"Abel\",\"Age\":29}] }";

获取该员工的姓名

//将json转换为JObject

JObject jObj = JObject.Parse(json);

//通过属性名或者索引来访问,仅仅是自己的属性名,而不是所有的

JToken ageToken =  jObj["Age"];

Console.WriteLine(ageToken.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

获取该员工同事的所有姓名

//将json转换为JObject

JObject jObj = JObject.Parse(json);

var names=from staff in jObj["Colleagues"].Children()

select (string)staff["Name"];

foreach (var name in names)

Console.WriteLine(name);

"Children()"可以返回所有数组中的对象

Newtonsoft.Json之JArray, JObject, JPropertyJValue

现在我们发现获取的json字符串中Jack的年龄应该为35

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            jObj["Age"] = 35;
            Console.WriteLine(jObj.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

现在我们发现Jack的同事Tom的年龄错了,应该为45

//将json转换为JObject

JObject jObj = JObject.Parse(json);

JToken colleagues = jObj["Colleagues"];

colleagues[0]["Age"] = 45;

jObj["Colleagues"] = colleagues;//修改后,再赋给对象

Console.WriteLine(jObj.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

删除
①现在我们想删除Jack的同事

            JObject jObj = JObject.Parse(json);
            jObj.Remove("Colleagues");//跟的是属性名称
            Console.WriteLine(jObj.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

现在我们发现Abel不是Jack的同事,要求从中删除

            JObject jObj = JObject.Parse(json);
            jObj["Colleagues"][1].Remove();
            Console.WriteLine(jObj.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

我们发现Jack的信息中少了部门信息,要求我们必须添加在Age的后面

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            jObj["Age"].Parent.AddAfterSelf(new JProperty("Department", "Personnel Department"));
            Console.WriteLine(jObj.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

现在我们又发现,Jack公司来了一个新同事Linda

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            JObject linda = new JObject(new JProperty("Name", "Linda"), new JProperty("Age", "23"));
            jObj["Colleagues"].Last.AddAfterSelf(linda);
            Console.WriteLine(jObj.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

使用函数SelectToken可以简化查询语句,具体:
①利用SelectToken来查询名称

            JObject jObj = JObject.Parse(json);
            JToken name = jObj.SelectToken("Name");
            Console.WriteLine(name.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue


②利用SelectToken来查询所有同事的名字

            JObject jObj = JObject.Parse(json);
            var names = jObj.SelectToken("Colleagues").Select(p => p["Name"]).ToList();
            foreach (var name in names)
                Console.WriteLine(name.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

查询最后一名同事的年龄

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            var age = jObj.SelectToken("Colleagues[1].Age");
            Console.WriteLine(age.ToString());

Newtonsoft.Json之JArray, JObject, JPropertyJValue

定义一个错误提示:

JObject errors = new JObject();

if (productName.Length <= 0)

{

errors.Add("ProductName", new JValue("该输入项为必输项"));

}

//获取json里的值
string jsonStr = "";//Json Str字符串
JToken json = JToken.Parse(jsonStr);//转化为JToken(JObject基类)
string xx = json.Value<string>("xx");//获取Json里xx键的值
JToken arr = json["arr"];//获取Json里的数组 {arr:[{yy:1,zz:2},{yy:3,zz:4}]}
foreach (JToken baseJ in arr)//遍历数组
{
int yy = baseJ.Value<int>("yy");
}
string yy1 = json["arr"][].Value<string>("yy");//也可以酱紫,多层的获取
string yy2 = json["arr"][]["yy"] != null ? json["arr"][]["yy"].ToString() : "";//这个和上面句等价,不要直接ToString,容易报错

JToken.ToObject Method

Overload List                        Name Description
Public method ToObject<T>()            Creates an instance of the specified .NET type from the JToken.
Public method ToObject(Type)           Creates an instance of the specified .NET type from the JToken.
Public method ToObject<T>(JsonSerializer)   Creates an instance of the specified .NET type from the JToken using the specified JsonSerializer.
Public method ToObject(Type, JsonSerializer)  Creates an instance of the specified .NET type from the JToken using the specified JsonSerializer.

http://www.cnblogs.com/usharei/archive/2012/04/24/2467578.html

Newtonsoft.Json之JArray, JObject, JPropertyJValue的更多相关文章

  1. Newtonsoft&period;Json之JArray&comma; JObject&comma; JProperty&comma;JValue

    JObject staff = new JObject(); staff.Add(new JProperty("Name", "Jack")); staff.A ...

  2. 使用Newtonsoft&period;Json&period;dll&lpar;JSON&period;NET&rpar;动态解析JSON、&period;net 的json的序列化与反序列化(一)

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  3. Newtonsoft&period;Json解析json字符串和写json字符串

    写: StringWriter sw = new StringWriter(); JsonWriter writer = new JsonWriter(sw); //如果报错则使用JsonWriter ...

  4. Newtonsoft&period;Json读取txt文件中json数据并存到SQL service 数据库!

    using System; using System.Collections.Generic; using System.Text; using System.IO; using Newtonsoft ...

  5. Newtonsoft&period;Json解析数组

    以下是解析json数组: var jsonInfo=[{"name":"abc","id":"1","coun ...

  6. C&num;利用newtonsoft&period;json读取&period;so配置文件内容

    今天花 了点时间来使用 C#读取json文件 ,文件后缀为 .so文件 ,也是基于文件流的形式 获取 对象 ,然后解析; 之所以尝试 使用 json读取 ,是因为其配置文件的格式 更为友好 和方便,直 ...

  7. 遍历Newtonsoft&period;Json&period;Linq&period;JObject

    JObject 遍历: 引用命名空间:using Newtonsoft.Json.Linq; JObject _jObject = JObject.Parse("{'ID':'001','M ...

  8. C&num; Newtonsoft&period;Json JObject移除属性,在序列化时忽略

    原文 C# Newtonsoft.Json JObject移除属性,在序列化时忽略 一.针对 单个 对象移除属性,序列化时忽略处理 JObject实例的 Remove() 方法,可以在 指定序列化时移 ...

  9. C&num; Newtonsoft&period;Json JObject 操作

    C# Newtonsoft.Json JObject 操作举例 JArray j = new JArray(); JObject obj = new JObject( ") ); JObje ...

随机推荐

  1. hibernate的环境配置

    1,首先把跟Hibernate相关的jar包导入到lib目录下: 2,写Javabean类 package chen.can.Dao; public class TRegister implement ...

  2. JAVA NIO系列(四) 选择器

    前面介绍过Channel.Buffer,后面的文章主要讲解Selector的实践以及实现原理,选择器的概念比起通道.缓冲区要复杂一些,并且选择器是NIO中最重要的一部分内容. 为什么使用Selecto ...

  3. Ural 1332 把圆细分&plus;圆内切,内含关系判定

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1332 #include<cstdio> #include<cstrin ...

  4. 以正方教务系统为例,用php模拟登陆抓取课表、空教室

    课程格子和超级课程表这两个应用,想必大学生都很熟悉,使用自己的学号和教务系统的密码,就可以将自己的课表导入,随时随地都可以在手机上查看. 其实稍微了解一点php的话,我们也可以做一个类似这样的web ...

  5. PHP和js实时倒计时

    <?php //这是t.php页面 header('content-type:text/html;charset=utf-8'); date_default_timezone_set('PRC' ...

  6. dotNet core 应用部署至 centos(超详解附截图)

    文章来源:公众号-智能化IT系统. 需要安装的插件以及支撑架构 1.dotnetSDK dotnet 相关命令是属于 .NET Core command-line (CLI) 的一部分,Microso ...

  7. python面试题之如何用Python输出一个斐波那契数列

    so eary! 1 a,b = 0, 1 2 while b<100: 3 print (b), 4 a, b = b, a+b 本文转载自:python黑洞网 原文链接:http://www ...

  8. 复旦高等代数 I(17级)每周一题

    本学期将继续进行高等代数每周一题的活动.计划从第二教学周开始,到第十六教学周为止(根据法定节假日安排,中间个别周会适当地停止),每周的周末将公布1-2道思考题,供大家思考和解答.每周一题通过“谢启鸿高 ...

  9. 使用word2vec训练中文词向量

    https://www.jianshu.com/p/87798bccee48 一.文本处理流程 通常我们文本处理流程如下: 1 对文本数据进行预处理:数据预处理,包括简繁体转换,去除xml符号,将单词 ...

  10. MVC3--View层

    Razor二义性: 1,当view层中出现   邮件格式时候比如   anbylau2130@qq.com 这种情况Razor将会出现多义性 可以使用@@来转义为一个@字符, 如:<p>y ...