最近做项目经常碰到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