最近做項目經常碰到json格式的字符串,為了便於取值,所以就想將json格式的字符串轉換為json對象,然后通過json對象的方法獲取鍵值對的value值。
一:使用json對象的話,需要在項目中導入以下jar包:
commons-beanutils.jar
commons-collections-3.2.1.jar
commons-lang-2.6.jar
commons-logging-1.2.jar
ezmorph-1.0.6.jar
json-lib-2.4-jdk15.jar
xom-1.1.jar
注:最好導入上面提到的版本的jar包,如果其中一個導入的是最新版本的jar包【目前已知的是commons-lang-2.6.jar不可以使用新版本的jar包,其他的暫時未測試過】,那么可能就會出現以下問題:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException......
以上jar包下載地址如下:
http://pan.baidu.com/s/1bnvRG7d
二:一個簡單的小例子,僅供參考
1 import net.sf.json.JSONArray; 2 import net.sf.json.JSONObject; 3 4 5 public class JsonTest { 6 public static void main(String[] args) throws Exception { 7 /* 8 * 將json格式的字符串轉換成json對象,然后根據json對象的方法獲取鍵值對值 9 * json格式的字符串{"name":"why","age":28,"class":["math","english","history"]} 10 * 分別獲取name、age、classes對應的value值 11 * */ 12 String jsonStr = "{\"name\":\"why\",\"age\":28,\"classes\":[\"math\",\"english\",\"history\"]}"; 13 System.out.println("jsonStr=="+jsonStr); 14 15 JSONObject jsonObj = JSONObject.fromObject(jsonStr); 16 System.out.println("jsonObj=="+jsonObj); 17 18 String nameStr = jsonObj.getString("name"); 19 int age = jsonObj.getInt("age"); 20 String ageStr = jsonObj.getString("age"); 21 JSONArray classesObj = jsonObj.getJSONArray("classes"); 22 23 System.out.println("nameStr=="+nameStr); 24 System.out.println("age=="+age); 25 System.out.println("ageStr=="+ageStr); 26 System.out.println("classesObj=="+classesObj); 27 28 for (int i = 0; i < classesObj.size(); i++) { 29 System.out.println("element " + i + " :" + classesObj.get(i)); 30 } 31 32 String addStrValue = "boy"; 33 jsonObj.put("sex", addStrValue); 34 System.out.println("jsonObj=="+jsonObj); 35 36 37 } 38 }
代碼運行結果:
jsonStr=={"name":"why","age":28,"classes":["math","english","history"]}
jsonObj=={"name":"why","age":28,"classes":["math","english","history"]}
nameStr==why
age==28
ageStr==28
classesObj==["math","english","history"]
element 0 :math
element 1 :english
element 2 :history
jsonObj=={"name":"why","age":28,"classes":["math","english","history"],"sex":"boy"}
三:本文章參考資料
1、java與json的互相轉換:http://blog.sina.com.cn/s/blog_663bfedc0100tap3.html
2、Json lib 拋出 NestableRuntimeException:http://blog.csdn.net/wugewuge/article/details/8074272