在Java中用Json进行数据传输时,有时候传输的数据不是简单的一对一的键值对,而是会涉及到层次不齐的键值对,这个时候,就需要用JSONArray和JSONObject的方式来解决问题。在用到的Java中,要导入相应的JSON jar包。
Order order1 = new Order();
Order order2 = new Order();
Order order3 = new Order();
order1.setTxnAmt("1000");
order1.setTxnDt("10");
order2.setTxnAmt("2000");
order2.setTxnDt("20");
order3.setTxnAmt("3000");
order3.setTxnDt("30");
order3.setTxnCardType("1");
List<Order> list = new ArrayList<Order>();
list.add(order1);
list.add(order2);
list.add(order3);
模拟一个例子,就是将一个Order订单的对象,设置交易的金额,交易的属性和交易的银行卡类型,然后添加到list中。有时候或许不是用一个bean对象,而是用map,同样用put属性方法,一一放进一个map,然后再放进一个list中。
Map<String,String> map1 = new HashMap<String,String>();
Map<String,String> map2 = new HashMap<String,String>();
Map<String,String> map3 = new HashMap<String,String>();
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
map1.put("name","aaa");
map1.put("age","22");
map1.put("sex","男");
list.add(map1);
map2.put("name","bbb");
map2.put("age","23");
map2.put("sex","女");
list.add(map2);
map3.put("name","ccc");
map3.put("age","24");
map3.put("sex","男");
list.add(map3);
接下来就是将list转化成JSONArray对象,
String jsonStr = JSONArray.fromObject(list);
这在传输数据的时候,有时候有必要转换成字符串的格式,字符串能够在字符流,转换成对象很好的传输。
然后再转换成JSONArray对象取出对象。
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
当然,也可以直接:
JSONArray jsonArray = JSONArray.fromObject(list);
这时候就分析JSONArray的特性,其实质是一个数组,数组里面装了JSONObject,可以直接通过访问数组的方式访问JSONObject对象。一个JSONObject对象就是一个bean对象,或者一个map,而解析获取其中的值都是用get(“key”)方法,这个与map取值方式极为相似,要取哪个对应的值,get哪个属性,所以,一般也把JSONObject看做特殊的map对象。
也可以对JSONArray按照数组的形式取得长度,遍历值,获取得到JSONObject:
System.out.println(ja.size());
for (int i = 0; i < ja.size(); i++) {
//数组方法取对象
JSONObject getJsonObj = jsonArray.getJSONObject(i); System.out.println(getJsonObj.get("txnAmt"));
}
}
就能够解析获取到对应的值。