前面两篇主要介绍了JSON的基本概念和JS中对JSON的基本操作,这里再介绍一下Java端解析JSON的方法。
本文采用的JSON的解析包是JSON-lib,JSON-lib是一个JAVA端的JSON解析类库,可以将beans, maps, collections, java arrays和XML转化为JSON,反之亦然。
http://json-lib.sourceforge.net/
使用JSON-lib还需要一些依赖包:
下面先看一下代码以及输出结果:
_____________________________________________________________________________
代码:
public class JSONArr { public static void main(String[] args) { /** * 通过字符串构建JSONArray * 方法一:fromObject(字符串); */ JSONArray jrFromString = new JSONArray(); String str = "[\"Java\", \"C++\"]"; jrFromString = jrFromString.fromObject(str); System.out.println("JSONArray------>fromObject(字符串): " + jrFromString); /** * 方法二:add(字符串); */ JSONArray jrFromString1 = new JSONArray(); jrFromString1.add(str); System.out.println("JSONArray------>add(字符串): " + jrFromString1); System.out.println("____________________________________________________"); /** * 通过数组构建JSONArray * 方法一:fromObject(字符串); */ JSONArray jrFromArray = new JSONArray(); String[] arrStr = new String[3]; arrStr[0] = "Java"; arrStr[1] = "C++"; arrStr[2] = "JavaScript"; jrFromArray = jrFromArray.fromObject(arrStr); System.out.println("JSONArray----->fromObject(数组): " + jrFromArray); /** * 方法二:add(字符串); */ JSONArray jrFromArray1 = new JSONArray(); jrFromArray1.add(arrStr); System.out.println("JSONArray----->add(数组): " + jrFromArray1); System.out.println("____________________________________________________"); /** * 通过List构建JSONArray * 方法一:fromObject(list) */ JSONArray jrFromList = new JSONArray(); List<String> list = new ArrayList<>(); list.add("张三"); list.add("李四"); list.add("王五"); jrFromList = jrFromList.fromObject(list); System.out.println("JSONArray----->fromObject(List): " + jrFromList); /** * 方法二:addAll(list) */ JSONArray jrFromList1 = new JSONArray(); jrFromList1.addAll(list); System.out.println("JSONArray----->addAll(List): " + jrFromList1); System.out.println("____________________________________________________"); /** * 通过Map构建JSONArray * 方式一:fromObject(map) */ JSONArray jrFromMap = new JSONArray(); Map<String, Integer> map = new HashMap<String, Integer>(); map.put("Jack", 22); map.put("Lily", 20); map.put("Tom", 24); jrFromMap = jrFromMap.fromObject(map); System.out.println("JSONArray----->fromObject(Map): " + jrFromMap); /** * 方式二:add(map) */ JSONArray jrFromMap1 = new JSONArray(); jrFromMap1.add(map); System.out.println("JSONArray----->add(Map): " + jrFromMap1); System.out.println("____________________________________________________"); /** * 通过对象构建JSONArray */ JSONArray jrFromObject = new JSONArray(); jrFromObject.add(new Person("李明", 22)); jrFromObject.add(new Person("张灵", 33)); System.out.println("JSONArray----->add(对象): " + jrFromObject); System.out.println("____________________________________________________"); /** *直接通过add方法构建数据 */ JSONArray jsonArray = new JSONArray(); jsonArray.add("aa"); jsonArray.add("bb"); jsonArray.add("cc"); System.out.println("JSONArray----->add(): " + jsonArray); } }
输出:
JSON-lib的API提供了几种操作Java元素的方法:
add(Object value)
fromObject(Object value)
addAll(Collection collection)
可以看出add(Object value)可以添加一个Java对象到JSONArray中,它可以是所有Java对象,fromObject(Object value)同样也可以接收所有Java对象,所不同的是add方法是将对象顺序添加到JSONArray数组的末尾,而fromObject方法是直接将相应的Java对象转化为数组,所以使用fromObject()方法将字符串、数组、集合和枚举转化为JSONArray对象会更有效。
addAll()方法,不难看出他操作的是Java中的集合对象。