前言介紹:
json-lib包是一個Java類庫,它可以將Java對象(包括:beans,maps,collections,java arrays ,xml等)和JSON互相轉換。
與此相同的是谷歌也推出了一個類庫叫Gson,它們能做到的效果都是一樣的,今天就先不講了。
准備工作:
首先我們需要去下載json-lib的jar包,並導入工程
由於使用方法很簡單,這里就直接上代碼了
1、首先寫一個json的工具類,傳入2參數,1為json的標示符(自定義),2為需要轉換成json字符串格式的對象
1 package com.lcw.json.util; 2 3 import net.sf.json.JSONObject; 4 5 public class MakeJson { 6 7 /** 8 * 9 * @param key json的標示符 10 * @param value json內容(多種類型,類類型,字符串,List集合等) 11 * @return 返回一個json表達式 12 */ 13 public static String getJson(String key,Object value){ 14 JSONObject jsonObject=new JSONObject(); 15 jsonObject.put(key, value);//給jsonobject對象賦值 16 String info=jsonObject.toString(); 17 return info; 18 } 19 20 }
2、提供一個數據源類
1 package com.lcw.json.service; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 8 import com.lcw.json.vo.Person; 9 10 public class JsonService { 11 12 //得到一個Person對象 13 public Person getPerson(){ 14 Person person=new Person(1, "tuzi", 22);//實例化一個Person對象 15 return person; 16 } 17 18 //得到一個List集合(存放Person類型) 19 public List<Person> getListPerson(){ 20 List<Person> list=new ArrayList<Person>(); 21 Person person1=new Person(1, "lcw", 20); 22 Person person2=new Person(2, "tuzi", 22); 23 list.add(person1); 24 list.add(person2); 25 return list; 26 27 } 28 //得到一個List集合(存放String類型) 29 public List<String> getInfo(){ 30 List<String> list=new ArrayList<String>(); 31 list.add("北京"); 32 list.add("上海"); 33 list.add("廣州"); 34 return list; 35 } 36 37 38 //得到一個List集合(存放Map類型) 39 public List<Map<String,Object>> getListPersons(){ 40 List<Map<String,Object>> list=new ArrayList<Map<String,Object>>(); 41 42 Map<String, Object> map1=new HashMap<String, Object>(); 43 Person person1=new Person(1, "lcw", 20); 44 map1.put("person1", person1); 45 46 Map<String, Object> map2=new HashMap<String, Object>(); 47 Person person2=new Person(2, "tuzi", 22); 48 map2.put("person2", person2); 49 50 list.add(map1); 51 list.add(map2); 52 53 return list; 54 55 } 56 57 58 }
3、實體類
1 package com.lcw.json.vo; 2 3 public class Person { 4 5 private int id; 6 private String name; 7 private int age; 8 9 public Person(int id, String name, int age) { 10 super(); 11 this.id = id; 12 this.name = name; 13 this.age = age; 14 } 15 16 public int getId() { 17 return id; 18 } 19 20 public void setId(int id) { 21 this.id = id; 22 } 23 24 public String getname() { 25 return name; 26 } 27 28 public void setname(String name) { 29 this.name = name; 30 } 31 32 public int getAge() { 33 return age; 34 } 35 36 public void setAge(int age) { 37 this.age = age; 38 } 39 40 @Override 41 public String toString() { 42 return "Person [age=" + age + ", id=" + id + ", name=" + name + "]"; 43 } 44 45 }
4、測試類
1 package com.lcw.json.test; 2 3 import java.util.List; 4 import java.util.Map; 5 6 import org.junit.Test; 7 8 import com.lcw.json.service.JsonService; 9 import com.lcw.json.util.MakeJson; 10 import com.lcw.json.vo.Person; 11 12 public class JsonTest { 13 14 @Test 15 public void getPersonJson() { 16 JsonService jsonService = new JsonService(); 17 Person p1 = jsonService.getPerson(); 18 String info = MakeJson.getJson("person", p1); 19 System.out.println(info); 20 } 21 22 @Test 23 public void getListPersonJson() { 24 JsonService jsonService = new JsonService(); 25 List<Person> persons = jsonService.getListPerson(); 26 String info = MakeJson.getJson("persons", persons); 27 System.out.println(info); 28 29 } 30 31 @Test 32 public void getListString() { 33 JsonService jsonService = new JsonService(); 34 List<String> news = jsonService.getInfo(); 35 String info = MakeJson.getJson("info", news); 36 System.out.println(info); 37 } 38 39 @Test 40 public void getListPersonsJson() { 41 JsonService jsonService = new JsonService(); 42 List<Map<String,Object>> persons = jsonService.getListPersons(); 43 String info = MakeJson.getJson("persons", persons); 44 System.out.println(info); 45 46 } 47 48 49 }
上面是4個單元測試類,代碼很簡單,就不再做文字解釋了,看下運行效果圖:
接着來順帶小提下關於谷歌提供的類庫:Gson
首先還是一樣,需要先導入想對應的jar包
我們只需要去修改文章上面提供的工具類:(少了key標示符)
1 package com.lcw.json.util; 2 3 import com.google.gson.Gson; 4 5 public class MakeJson { 6 7 /** 8 * 9 * @param value json內容(多種類型,類類型,字符串,List集合等) 10 * @return 返回一個json表達式 11 */ 12 public static String getJson(Object value){ 13 Gson gson=new Gson(); 14 String info=gson.toJson(value);//為json設置一個數據源,這個類庫是自動轉換成json格式,並返回一個json字符格式 15 return info; 16 } 17 18 }
關於Gson的使用,可以看下這個簡要筆記:《Gson簡要使用筆記》
如果想做成服務端供遠程調用,把這些數據打印輸出到網頁就可以了。 ^_^
下篇文章講解從服務端獲取到json數據,在Android客戶端的解析。