關於Json-lib類庫的使用


前言介紹:

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客戶端的解析。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM