最近在学习JSON,顺便就把自己学习的总结一下 二 JSON 使用须要用的JAR包: commons-lang.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 this.name+"--"+this.pwd+"--"+this.sex; } }
例子如下:
import net.sf.json.JSONObject; public class TestJson { private static JSONObject json = null; 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:\java>java TestJson我们须要在 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:\java>java TestJson
{"id":"1","name":"张三","pwd":"123456"}
张三--123456--null
json添加元素除了用put();方法之外还可以用element();如:json.element("11", "222");
2.创建一个JSONArray对象,并添加元素:
JSONArray添加元素和list集合一样,当然取值也很像,代码如下
import net.sf.json.*; public class TestJson1 { private static JSONObject json = null; private static JSONArray jsonArray = null; 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("Java"); book.setPrice(52.3f); JSONObject object=JSONObject.fromObject(book); System.out.println(object.toString()); (2)示例二 Book book=new Book(); book.setName("Java"); book.setPrice(52.3f); Book book2=new Book(); book2.setName("C"); book2.setPrice(42.3f); List list=new ArrayList(); list.add(book); list.add(book2); JSONArray arry=JSONArray.fromObject(list); System.out.println(arry.toString()); //结果如下: [{"name":"Java","price":52.3},{"name":"C","price":42.3}] 2.从String到Object 要先用String对象构造一个JSONObject或者JSONArray对象 (1)示例一 String json="{name:'Java',price:52.3}"; JSONObject object=JSONObject.fromObject(json); System.out.println(object.get("name")+" "+object.get("price")); (2)示例二 String json="[{name:'Java',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:'Java',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:'Java',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 java.util.List; import java.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(); } //从Java的列表转换为字符串 public static String getJson(List list){ JSONArray ja=JSONArray.fromObject(list); return ja.toString(); } //从Java对象数组转换为字符串 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格式的字符串转换为List数组 public static List 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); } }