Json在数据传输中很好用,原因是JSON 比 XML 更小、更快,更易解析。
在Java程序中,如何使用处理JSON,现在有很多工具可以处理,比较流行常用的是google的gson和alibaba的fastjson,具体使用如下:
1、读取json然后处理
class ReadJSON { public static void main(String[] args) { String jsonStr = "{ \"one\":\"one\", \"two\":[{ \"two_1_1\":2.11, \"two_1_2\":2.12}, { \"two_2_1\":\"2.21\" } ], \"three\":[\"abc\",false], \"four\":{\"four_1\":4.1, \"four_2\":4.2 } }"; // one:简单类型 // two:对象数组(最复杂) // three:数组类型 // four:对象类型 jsonGoogle(jsonStr); jsonAlibaba(jsonStr); } // gosn读取处理json public static void jsonGoogle(String jsonStr) { JsonParser parser = new JsonParser(); JsonObject jsonObj = (JsonObject) parser.parse(jsonStr); String one = jsonObj.get("one").getAsString(); System.out.println(one);// one JsonArray twoObjArray = jsonObj.get("two").getAsJsonArray(); System.out.println(twoObjArray);// [{"two_1_1":2.11,"two_1_2":2.12},{"two_2_1":"2.21"}] JsonObject twoObj = (JsonObject) twoObjArray.get(0); String two = twoObj.get("two_1_1").getAsString();// 可以当成string处理 System.out.println(two);// 2.11 JsonArray threeArray = jsonObj.get("three").getAsJsonArray(); String three_1 = threeArray.get(0).getAsString(); boolean three_2 = threeArray.get(1).getAsBoolean(); System.out.println(three_1 + three_2);// abcfalse JsonObject fourObj = jsonObj.get("four").getAsJsonObject(); double four_1 = fourObj.get("four_1").getAsDouble(); System.out.println(four_1);// 4.1 } // fastjson读取处理json public static void jsonAlibaba(String jsonStr) { JSONObject jsonObj = JSON.parseObject(jsonStr); String one = jsonObj.getString("one"); System.out.println(one);// one JSONArray twoObjArray = jsonObj.getJSONArray("two"); System.out.println(twoObjArray);// [{"two_1_1":2.11,"two_1_2":2.12},{"two_2_1":"2.21"}] JSONObject twoObj = twoObjArray.getJSONObject(1); String two_2 = twoObj.getString("two_2_1"); System.out.println(two_2);// 2.21 JSONArray threeArray = jsonObj.getJSONArray("three"); String three_1 = threeArray.getString(0); boolean three_2 = threeArray.getBoolean(1); System.out.println(three_1 + three_2);// abcfalse JSONObject fourObj = jsonObj.getJSONObject("four"); String four_1 = fourObj.getString("four_1"); System.out.println(four_1);// 4.1 } }
2、写json
public class Person { private String name; private int age; private double salary; private boolean hasBaby; private List<String> babyNames; // setter/getter/toString等 }
public class WriteJSON { public static void main(String[] args) { writeJsonGoogle(); writeJsonAlibaba(); } // gson写json public static void writeJsonGoogle() { JsonObject jsonObj = new JsonObject(); jsonObj.addProperty("one", "oneStr"); jsonObj.addProperty("two", false); JsonObject threeObj = new JsonObject(); threeObj.addProperty("three", 3); jsonObj.add("three", threeObj); JsonArray jsonArray = new JsonArray(); JsonObject four_1 = new JsonObject(); four_1.addProperty("four_1", 4.1); JsonObject four_2 = new JsonObject(); four_2.addProperty("four_2", true); jsonArray.add(four_1); jsonArray.add(four_2); jsonObj.add("four", jsonArray); System.out.println(jsonObj.toString()); // {"one":"oneStr","two":false,"three":{"three":3},"four":[{"four_1":4.1},{"four_2":true}]} } // fastjson写json public static void writeJsonAlibaba() { Map<String, Object> jsonMap = new TreeMap<String, Object>(); jsonMap.put("one", "oneStr"); jsonMap.put("two", false); Map<String, Object> threeObj = new HashMap<String, Object>(); threeObj.put("three_1", "3.1"); threeObj.put("three_2", 3.2); jsonMap.put("three", threeObj); JSONObject jsonObj = new JSONObject(jsonMap); List<String> babynames = new ArrayList<String>(); babynames.add("abc"); babynames.add("def"); Person person = new Person("gusi", 12, 7000.00, true, babynames); jsonObj.put("four", person); jsonObj.put("five", 5); System.out.println(jsonObj.toJSONString()); // {"five":5,"four":{"age":12,"babyNames":["abc","def"],"hasBaby":true,"name":"gusi","salary":7000},"one":"oneStr","three":{"three_1":"3.1","three_2":3.2},"two":false} } }
3、对象类型和json的常用转换(包括gson和fastjson)
基础Object
public class Demo implements Serializable { String name; int age; boolean man; public Demo() { super(); } public Demo(String name, int age, boolean man) { super(); this.name = name; this.age = age; this.man = man; } // setter/getter,千万不能忘了,不然fastjson不能设置值 @Override public String toString() { return "Demo [name=" + name + ", age=" + age + ", man=" + man + "]"; } }
处理方式
//gson Demo demo1 = new Demo("a", 1, false); String json1 = new Gson().toJson(demo1);// JavaBean到String System.out.println(json1); Demo demo2 = new Gson().fromJson(json1, Demo.class);// String到JavaBean System.out.println(demo2); JsonObject jsonObj1 = (JsonObject) new JsonParser().parse(json1);// String到jsonObject System.out.println(jsonObj1); String json2 = jsonObj1.toString();// jsonObject到String System.out.println(json2); //fastjson Demo demo3 = new Demo("b", 2, true); String json3 = JSON.toJSONString(demo3);// JavaBean到String System.out.println(json3); Demo demo4 = JSON.parseObject(json3, Demo.class);// String到JavaBean System.out.println(demo4); JSONObject jsonObj2 = JSON.parseObject(json3);// String到jsonObject System.out.println(jsonObj2); String json4 = jsonObj2.toJSONString();// jsonObject到String System.out.println(json4); JSONObject jsonObj3 = (JSONObject) JSON.toJSON(demo3);// JavaBean到jsonObject System.out.println(jsonObj3);
通过上面的方法,基本上就能处理绝大部分的json.
相关推荐
java处理JSON数据
org.json java处理json数据 包含source class文件和 javadoc
java处理json格式所需要的jar包
java处理JSON格式数据的通用类,详细的介绍了java和Json之间的相关联系以及各种类型的转换
一个java处理JSON格式数据的通用类.pdf 用java处理json格式的数据,因此封装了一个class
java处理json数据格式的jar包,json-lib-2.3-jdk15.jar,ezmorph-1.0.6.jar,commons-logging-1.0.4.jar,commons-lang.jarcommons-collections-3.1.jar,commons-beanutils-1.7.0.jar
java json-lib处理json对象的常用代码,下载导入可用,可验证。
处理嵌套json格式的数据。。。 public static void main(String[] args) { // 官方API http://www.json.org/java/ /* 购物车中信息 goods_cart={cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚...
json是一个轻量级数据交换格式,很容易被人们读写,很容易被机器解析和生成。它建立在js的一个子集之上,json是一个文本格式,它独立于具体的语言,但是使用了和c类似的...包括c、c++、c#、java、js、perl、perl、等。
java后台处理json数据需要用到的包,包括commons-beanutils-1.7.0.jar,commons-collections-3.2.1.jar,commons-httpclient-3.1.jar,commons-lang-2.3.jar,commons-logging-1.1.1.jar,ezmorph-1.0.3.jar,json-...
处理json格式数据。。 String s0 = "{cart_1325036696007:{goods_id:"100015",goods_name:"澳大利亚进口绵羊",goods_imgsrc:"http://192.168.1.180:7001//gwadmin/uploadimg/spxc/2011/12/9/100016_00948703_68.jpg"...
java使用fastJson处理复杂Json字符串,直接获取key对应的value值
在java中处理JSON相当复杂,本文档为一个工具类,写的相当好,与大家分享一下。
好用的json包,更容易解析json数据结构
处理JSON的jar包,包含了核心 jar包 json-lib-1.1-jdk13.jar。
前一段工作中总会遇到使用Java处理JSON的情况,大部分都使用的是开源工具Jackson实现的。 因此总结一下发上来,希望对看到的人有所帮助。
。。。
。。。