我们在日常开发中少不了和JSON数据打交道,下面总结了用到的框架来解析JSON数据
json-liborg.jsonjackSonfastjsonGSON1. json-lib
json-lib具有通用性,但是比较麻烦,且时间有些久远,jar包只更新到2010年
1.1 maven依赖
1.2 具体操作
1.2.1 JSONObject与String相互转换
JSONObject jsonobject= JSONObject.fromObject(str);
String str = JSONObject.toString
1.2.2 获取JSONObject数据及遍历JSONArray
String str = JSONObject.getInt("keys")
String str = JSONObject.getString("keys")
JSONArray = JSONObject.getJSONArray(String);
遍历:
for(i { JSONObject = JSONArray.getJSONObject(i); JSONObject.getInt()... } Iterator while(iterator.hasNext()){ String keys = iterator.next(); } 1.2.2 JSONObject转对象 Grade grade = (Grade)JSONObject.toBean(jsonObject,Grade.class); 2.org.json 与json-lib相类似,主要有三点区别 2.1maven依赖 2.2 创建json对象 JSONObject = new JSONObject(str); 2.3 net.sf.json.JSONObject: 没有严格要求获取字段的类型跟getXXX()的类型一样 org.json.JSONObject:获取的字段类型必须跟getXXX()的类型一样 2.4 JSONArray.length() 3. jackSon springMVC内置解析器就是jackson 3.1 maven依赖 3.2 对象和String之间的转换 ObjectMapper mapper=new ObjectMapper(); Grade grade=mapper.readValue(json1, Grade.class); mapper.writeValueAsString(grade); 3.3 对JsonNode的遍历 JsonNode jsonNode = mapper.readTree(jsonStr); Iterator while(keys.hasNext()){ String fieldName = keys.next(); System.out.println(fieldName + " : " + jsonNode.path(fieldName).toString()); } 4. fastjson 阿里巴巴开源框架,效率最高 4.1 maven依赖 4.2 String转对象 Student stu = JSON.parseObject(json,Student.class); List 4.3 对象转String JSON.toJSONString(stu); //or String json = JSON.toJSON(stu).toString(); 5.GSON 谷歌产品 5.1 maven依赖 5.2 String转对象 Gson gson = new Gson(); Grade grade = gson.fromJson(json1,Grade.class); ArrayList 5.3 对象转String String json=gson.toJson(grade);