您好,欢迎访问一九零五行业门户网

JSON-lib包对json的构造和方法的使用

json-lib包(最关键的两个类分别是jsonobject和jsonarray)完成对json的构造和一些基本方法的使用。
二者区别:
        ①jsonobject构造的字符串是键值对形式(key:value),多个键值对间以英文逗号连接;
        ②jsonarray构造的字符串是数组形式([array1,array2,...])。
需要使用的包下载链接: 
一、jsonobject的使用。
(1)json字符串的两种构造方法:
①使用java对象;②使用map集合。
步骤一:首先新建java工程,导入依赖包;
步骤二:建立两个测试类:
teacher.java
package com.snnu.json;import java.util.list;public class teacher {private string name;private string sex;private int age;private list<transport> mytool;         public teacher(){              }    public teacher(string name,string sex,int age,list<transport> mytool){this.name = name;this.sex = sex;this.age = age;this.mytool = mytool;     }public string getname() {return name;     }public void setname(string name) {this.name = name;     }public string getsex() {return sex;     }public void setsex(string sex) {this.sex = sex;     }public int getage() {return age;     }public void setage(int age) {this.age = age;     }public list<transport> getmytool() {return mytool;     }public void setmytool(list<transport> mytool) {this.mytool = mytool;     } }
transport.java
package com.snnu.json;public class transport {    private string name;private float price;    public transport(){              }    public transport(string name,float price){this.name = name;this.price = price;     }         public string getname() {return name;     }public void setname(string name) {this.name = name;     }public float getprice() {return price;     }public void setprice(float price) {this.price = price;     }                     }
步骤三:写main方法
       方式一:
package com.snnu.json;import java.util.arraylist;import java.util.list;import net.sf.json.jsonobject;public class demo_creajsonfromobject {// 利用java对象生成json字符串public jsonobject createjsonfromobject(object object) {return jsonobject.fromobject(object);     }public static void main(string[] args) {// todo auto-generated method stubdemo_creajsonfromobject demo = new demo_creajsonfromobject();         teacher t = new teacher();         t.setname(张三);         t.setsex(男);         t.setage(21);         transport bike = new transport(自行车, 267);         transport motorcycle = new transport(摩托车, 3267);         transport car = new transport(小汽车, 100000);         list<transport> tools = new arraylist<transport>();         tools.add(bike);         tools.add(motorcycle);         tools.add(car);         t.setmytool(tools);         jsonobject ob = demo.createjsonfromobject(t);         system.out.println(ob);     } }
生成的json字符串为:
{     age: 21,     mytool: [         {             name: 自行车,             price: 267         },         {             name: 摩托车,             price: 3267         },         {             name: 小汽车,             price: 100000         }     ],     name: 张三,     sex: 男 }
方式二:
package com.snnu.json;import java.util.hashmap;import java.util.map;import net.sf.json.jsonobject;public class demo_creajsonfrommap {//使用map集合生成json字符串public jsonobject createjsonfrommap(map<string,string> map){         jsonobject jsob=new jsonobject();         jsob.putall(map);return jsob;     }         public static void main(string[] args) {// todo auto-generated method stubdemo_creajsonfrommap demo=new demo_creajsonfrommap();                  map<string,string> mmap=new hashmap<string,string>();         mmap.put(name, 张三);         mmap.put(sex, 男);         mmap.put(age, 21);                  jsonobject ob=demo.createjsonfrommap(mmap);         system.out.println(ob);              } }
生成的json字符串为:
{sex: 男,name: 张三,age: 21}
(2)jsonobject的三个常用方法举例。
package com.snnu.json;import java.util.arraylist;import java.util.list;import net.sf.json.jsonobject;public class methodtest {//put方法:在一个json中插入一个节点,若该节点已存在,则该节点的值将会被替换public jsonobject testput(){         jsonobject jo1=new jsonobject();                  jo1.put(a, 1);         jo1.put(b, 2);         jo1.put(c, 3);                  transport bike=new transport(bike,200);         jo1.put(d, bike);                  list<string> list=new arraylist<string>();         list.add(one);         list.add(two);         list.add(three);         jo1.put(e, list);                  jo1.put(a, 100);        return jo1;     }         //accumulate方法:可以在同一个key下累积值,若key对应的value有值,则以数组形式累积;否则相当于put方法public jsonobject testaccumulate(){         jsonobject jo2=new jsonobject();                  jo2.put(a, 1);         jo2.put(b, 2);         jo2.put(c, 3);         jo2.accumulate(c, 300);                  transport bike=new transport(bike,200);         jo2.accumulate(c, bike);                  list<string> list=new arraylist<string>();         list.add(one);         list.add(two);         list.add(three);         jo2.accumulate(c, list);                  jo2.put(d, 4);        return jo2;     }         //与put方法基本一致public jsonobject testelement(){         jsonobject jo3=new jsonobject();                  jo3.put(a, 1);         jo3.put(b, 2);         jo3.put(c, 3);         jo3.element(c, 300);                 return jo3;     }              public static void main(string[] args) {// todo auto-generated method stubmethodtest test=new methodtest();         system.out.println(jsonobject的put方法使用+test.testput());         system.out.println(jsonobject的accumulate方法使用+test.testaccumulate());         system.out.println(jsonobject的element方法使用+test.testelement());              } }
①put方法输出json字符串格式化结果为:
{a: 100,b: 2,c: 3,d: {name: bike,price: 200},e: [one,two,three] }
②accumulate方法输出json字符串格式化结果为:
{a: 1,b: 2,c: [3,300,         {name: bike,price: 200},         [one,two,three]     ],d: 4}
③element方法输出json字符串格式化结果为:
{a: 1,b: 2,c: 300}
二、jsonarray的使用
(1)基本使用:
package com.snnu.json;import net.sf.json.jsonarray;import net.sf.json.jsonobject;public class demo_jsonarray {         public jsonobject testjsonarray(){         jsonobject ob=new jsonobject();                  jsonarray ja=new jsonarray();         ja.add(1);         ja.add(2);         ja.add(3);         ja.add(4);         ja.add(5);                  ob.put(array, ja);        return ob;     }         public static void main(string[] args) {// todo auto-generated method stubdemo_jsonarray djs=new demo_jsonarray();         system.out.println(jsonarray的使用:+djs.testjsonarray());              } }
对输出后的字符串进行格式化:
{array: [1,2,3,4,5] }
三、综合实例
package com.snnu.json;import net.sf.json.jsonarray;import net.sf.json.jsonobject;public class demo_testjson {              public jsonobject test(){                  jsonobject jo=new jsonobject();         jo.put(name, 张三);         jo.put(sex,f);         jo.put(age,21);                  transport bike=new transport(bike,250);         jo.put(extra, bike);         transport car=new transport(car,10000);         jo.accumulate(extra, car);         transport motor=new transport(motor,3000);         jo.accumulate(extra, motor);                  system.out.println(jo);        //根据key值(为extra)取对应的valuestring value=jo.getstring(extra);         system.out.println(value);        //将字符串转化为jsonarrayjsonarray jsar=jsonarray.fromobject(value);         string str_2=string.valueof(jsar.get(1));         system.out.println(str_2);        //将字符串转化为jsonobjectjsonobject jsob=jsonobject.fromobject(str_2);         system.out.println(名称:+jsob.getstring(name));         system.out.println(价钱:+jsob.getstring(price));                  system.out.println(-------------------------------分界线-------------------------------------------);        return jo;              }public static void main(string[] args) {// todo auto-generated method stubdemo_testjson dtj=new demo_testjson();         system.out.println(综合测试:+dtj.test());     } }
输出结果为:
{name:张三,sex:f,age:21,extra:[{name:bike,price:250},{name:car,price:10000},{name:motor,price:3000}]} [{name:bike,price:250},{name:car,price:10000},{name:motor,price:3000}] {name:car,price:10000} 名称:car 价钱:10000 -------------------------------分界线-------------------------------------------综合测试:{name:张三,sex:f,age:21,extra:[{name:bike,price:250},{name:car,price:10000},{name:motor,price:3000}]}
以上就是json-lib包对json的构造和方法的使用的详细内容。
其它类似信息

推荐信息