j**a中json怎么运用?
一 简介: json(j**ascript对象符号)是一种轻量级的数据交换格式。这是很容易为人类所读取和写入。这是易于机器解析和生成。它是基于j**ascript编程语言的一个子集 , 标准ecma-262第三版- 1999年12月。json是一个完全独立于语言的文本格式,但使用c家族的语言,包括c,c + +,c#,j**a中的j**ascript,perl的,python中,和许多其他程序员所熟悉的约定。这些特性使json成为理想的数据交换语言。他和map很类似,都是以键/值 对存放的。二 json 使用须要用的jar包:commons-lang.jarcommons-beanutils.jarcommons-collections.jarcommons-logging.jarezmorph.jarjson-lib-2.2.2-jdk15.jar三 使用json中的jsonobject:1.创建一个jsonobject对象,并使用put();方法添加元素:首先我们创建一个user对象以备后用:public class user { private int id; private string name; private string pwd; private string sex; //get,set方法 @override //重写他的tostring方法 public string tostring() { return th**.name+"--"+th**.pwd+"--"+th**.sex; }}例子如下:import net.sf.json.jsonobject;public class testjson { private static jsonobject json = **;public static void main(string[] args) {json = new jsonobject();json.put("id","1");json.put("name","张三");json.put("pwd","123456");system.out.println(json);}}运行:c:\j**a>j**a testjson{"id":"1","name":"张三","pwd":"123456"}通过这段代码我们就能很清淅的看到他的添加元素和map集合方式一样。现在我们要将这个json对象放进一个j**abean的user对象怎么弄呢?很简单我们须要在 testjson 类中的主方法中加入(放在system.out.println(json)这句话后面)user user = new user();user.setid(integer.parseint(json.getstring("id")));//json.getstring("id")就是通过他的key值取得对应的value值user.setname(json.getstring("name"));user.setpwd(json.getstring("pwd"));system.out.println(user);这样我们就把json这个对象里的值放进user对象里面了。运行:c:\j**a>j**a testjson{"id":"1","name":"张三","pwd":"123456"}张三--123456--**json添加元素除了用put();方法之外还可以用element();如:json.element("11", "222");2.创建一个jsonarray对象,并添加元素:jsonarray添加元素和l**t集合一样,当然取值也很像,代码如下import net.sf.json.*;public class testjson1 { private static jsonobject json = **; private static jsonarray jsonarray = **; public static void main(string[] args) { jsonarray = new jsonarray (); jsonarray.add(0, "张三"); jsonarray.add(1, "李四"); jsonarray.add(2, "王五"); jsonarray.add(3, "小三"); system.out.println(jsonarray); system.out.println(jsonarray.get(1)); } } 输出结果为:["张三","李四","王五","小三"]李四注:json的基本格式这些网上很多,就不多说了,我们只须记住一句话就行了:[]表示数组,{}表示对象就完了!1.从object到string 要先用object对象构造一个jsonobject或者jsonarray对象,然后调用它的tostring()方法即可(1)示例一 book book=new book(); book.setname("j**a"); book.setprice(52.3f); jsonobject object=jsonobject.fromobject(book); system.out.println(object.tostring());(2)示例二 book book=new book(); book.setname("j**a"); book.setprice(52.3f); book book2=new book(); book2.setname("c"); book2.setprice(42.3f); l**t l**t=new arrayl**t(); l**t.add(book); l**t.add(book2); jsonarray arry=jsonarray.fromobject(l**t); system.out.println(arry.tostring()); //结果如下: [{"name":"j**a","price":52.3},{"name":"c","price":42.3}]2.从string到object 要先用string对象构造一个jsonobject或者jsonarray对象(1)示例一 string json="{name:'j**a',price:52.3}"; jsonobject object=jsonobject.fromobject(json); system.out.println(object.get("name")+" "+object.get("price")); (2)示例二 string json="[{name:'j**a',price:52.3},{name:'c',price:42.3}]"; jsonarray array=jsonarray.fromobject(json); for(int i=0;i< array.size();i++){ map o=(map)array.get(i); system.out.println(o.get("name")+" "+o.get("price")); }3.从string到bean(1)单个bean对象 string json="{name:'j**a',price:52.3}"; jsonobject object=jsonobject.fromobject(json); product product=(product)jsonobject.tobean(object,product.class); system.out.println(product.getname()+" "+product.getprice()); (2).bean的数组 string json="[{name:'j**a',price:52.3},{name:'c',price:42.3}]"; jsonarray array=jsonarray.fromobject(json); product[] products=(product[]) jsonarray.toarray(array,product.class); for(product p:products){ system.out.println(p.getname()+" "+p.getprice()); }自定义封装json操作的类 package com.util; import j**a.util.l**t; import j**a.util.map; import net.sf.json.jsonarray; import net.sf.json.jsonobject; public class jsonhelper { //从普通的bean转换为字符串 public static string getjson(object o){ jsonobject jo=jsonobject.fromobject(o); return jo.tostring(); } //从j**a的列表转换为字符串 public static string getjson(l**t l**t){ jsonarray ja=jsonarray.fromobject(l**t); return ja.tostring(); } //从j**a对象数组转换为字符串 public static string getjson(object[] arry){ jsonarray ja=jsonarray.fromobject(arry); return ja.tostring(); } //从json格式的字符串转换为map对象 public static map getobject(string s){ return jsonobject.fromobject(s); }//从json格式的字符串转换为l**t数组 public static l**t getarray(string s){ return jsonarray.fromobject(s); } //从json格式的字符串转换为某个bean public static object getobject(string s,class cls){ jsonobject jo=jsonobject.fromobject(s); return jsonobject.tobean(jo, cls); } //从json格式的字符串转换为某类对象的数组 public static object getarray(string s,class cls){ jsonarray ja=jsonarray.fromobject(s); return jsonarray.toarray(ja, cls); } } 20210311