前两天要用到json对象,久了没有用JObject.用法都已经忘了.后来搞半天才一知半解.暂时把一直半解给记录下来,以免以后忘记,若能帮助到其他人那也不错
首先用到的两个类.JObject 和JArray 需要引入库:Newtonsoft.Json.dll
我所用到的demo 是一个基本的MVC项目.
情况一:返回一个基本的json对象:
后台代码:
public JObject GetObj() { JObject obj =new JObject(); obj.Add("Name","Ray"); return obj; }
通过chrome访问会得到如下的结果:
情况二:生产环境肯定不会这么简单,肯定会有多个键值对,我就是卡到这里
返回一个稍显复杂的json字符串:
后台代码:
public JObject GetObj() { JObject obj =new JObject(); obj.Add("Name","Ray"); obj.Add("Gender","Male"); return obj; }
通过chrome访问会得到如下的结果:
情况三:到这里仍然不能满足实际需求,也许我们需要子对象,比如增加一个联系方式,联系方式有电话和QQ
后台代码:
public JObject GetObj() { JObject obj =new JObject(); obj.Add("Name","Ray"); obj.Add("Gender","Male"); //增加一个联系方式 JObject contact=new JObject(); contact.Add("Phone","151XXXXXXXX"); contact.Add("QQ","123456789"); obj.Add("Contact",contact); return obj; }
通过chrome访问会得到如下的结果:
实际上后来vs的强大的插件resharper 提示我Jobject 定义的时候可以用更简洁的方法:请参考这种定义方法,不要一个一个add了:
JObject tom = new JObject {{"Name", "Tom"}, {"Gender", "Male"}};
好了,到了这里JObject的使用是不是已经会了呢.但是实际情况中,json对象中还会包括一些数组.这个时候我们就要用到JArray了.
情况一:最基本的JArray
后台代码:
public JArray GetJArray() { JArray array=new JArray(); JObject tom = new JObject {{"Name", "Tom"}, {"Gender", "Male"}}; JObject jack=new JObject{{"Name","Ray"},{"Gender","Female"}}; array.Add(tom); array.Add(jack); return array; }
通过chrome访问会得到如下的结果:
情况二:实际情况下,这种语法是极少的,通常还是会出现嵌套情况,请看下面
后台代码:
public JArray GetNestArray2() { //新建两个JObject对象 JObject kevin = new JObject(); kevin.Add("name", "kevin"); kevin.Add("age", 18); JObject jack = new JObject(); jack.Add("Name", "Jack"); jack.Add("age", 20); //新建一JArray对象 JArray objj = new JArray(); objj.Add(kevin); objj.Add(jack); //新建最外层的JArray对象 JArray reArray=new JArray(); //用简便的方法添加了一个JArray数组.参考上面new JObject的方法 reArray.Add(new JArray { new JObject { { "Name", "Lucy" }, { "age", 20 } }, new JObject { { "Name", "Lily" }, { "age", 20 } } }); //添加第一个JArray对象 reArray.Add(objj); return reArray; }
可以这样理解,一个[]必然对应着一个JArray对象.
通过chrome访问会得到如下的结果:
情况三:实际情况下JArray和JObject混用.请看下面的代码:
后台代码:
public JArray GetNestArray() { JObject kevin = new JObject{ { "name", "kevin" },{"age", 18}}; JObject jack = new JObject {{"Name", "Jack"}, {"age", 20}}; JObject obj4 = new JObject(); JArray childArray = new JArray {kevin, jack}; obj4.Add("array", childArray); JArray objj = new JArray {kevin, jack, obj4}; return objj; }
通过chrome访问会得到如下的结果(实际上一个数组里面存储的应该是平级并且有相同格式的内容,该例子只作为演示用.生产环境考虑其他数据格式):
该方法返回的是JArray对象
情况四:返回的是一个Jobject对象,常见情况
后台代码(业务逻辑是获取一个学生的信息,包括学生的两门课程分数):
public JObject GetStudentInfo() { //新建一个JObject对象 增加两个键值对 JObject studentInfo=new JObject{{"name","Kevin"},{"gender","Male"}}; //新建一个JArray对象,可以理解成json对象中 value 位置的数组对象 -> [] JArray courses = new JArray { new JObject { { "courseName", "Math" }, { "score", 88 } }, new JObject { { "courseName", "English" }, { "age", 95 } } }; studentInfo.Add("courses", courses); return studentInfo; }
通过chrome访问会得到如下的结果:
好了 到这里你已经可以应付一般情况的数据了.
完毕! ^_^