JSON.parseArray():
這個方法的作用就是將json格式的數據轉換成數組格式。
假設有Person這個類,有json類型數據jsonStr = [{"name":"張三","age":"1"},{"name":"李四","age":"4"}],那么List lists = json.parseArray(jsonStr, Person.class);lists就可以接收jsonStr了
源碼解析:
1 public static <T> List<T> parseArray(String text, Class<T> clazz) { 2 if (text == null) { 3 return null; 4 } 5 6 List<T> list; 7 8 DefaultJSONParser parser = new DefaultJSONParser(text, ParserConfig.getGlobalInstance()); 9 JSONLexer lexer = parser.getLexer(); 10 if (lexer.token() == JSONToken.NULL) { 11 lexer.nextToken(); 12 list = null; 13 } else { 14 list = new ArrayList<T>(); 15 parser.parseArray(clazz, list); 16 17 parser.handleResovleTask(list); 18 } 19 20 parser.close(); 21 22 return list; 23 }
JSON.parseObject();
是將str轉化為相應的JSONObject對象,其中str是“鍵值對”形式的json字符串,轉化為JSONObject對象之后就可以使用其內置的方法,進行各種處理了。
1 public static <T> T parseObject(String text, Class<T> clazz) { 2 return parseObject(text, clazz, new Feature[0]); 3 }
JSON.parseObject(String str)與JSONObject.parseObject(String str)的區別
根據源碼顯示:JSON是一個抽象類,JSON中有一個靜態方法parseObject(String text),將text解析為一個JSONObject對象並返回;JSONObject是一個繼承自JSON的類,當調用JSONObject.parseObject(result)時,會直接調用父類的parseObject(String text)。所以兩者沒什么區別,一個是用父類去調用父類自己的靜態的parseObject(String text),一個是用子類去調用父類的靜態parseObject(String text),兩者調的是同一個方法。