JSON有六種數值:數值,字符串,數組,對象,布爾值,null;java
JSON API把這幾種數值分紅四種類型:primitive,array,object,null;json
如下以gson爲例,有四個被操做的對象:JsonObject,JsonPrimitive,JsonArray,JsonNull,他們的父接口都是JsonElement;數組
JsonObject裏面值得注意的是entryset返回含有條目的集合,還有getAsXXX(),這樣返回JsonElemnt的其餘形式,例如Integer、Char;jsonp
JsonPrimitive裏面值得注意的是isJsonArray()、isJsonObject()、isJsonNull()、isJsonPrimitive(),還有getAsXXX();對象
JsonArray:Iterator()用以遍歷,getAsXXX();blog
如下是遍歷JSON文件所有value的方法:遞歸
// 遞歸遍歷JSON文件 public static void ergopdicJSON(JsonElement element) { //json元素爲對象 if(element instanceof JsonObject){ Set<Map.Entry<String, JsonElement>> set = ((JsonObject) element).entrySet(); Iterator<Map.Entry<String, JsonElement>> iterator = set.iterator(); if(set.size() == 0){ System.out.println(iterator.next().getValue()); } else { while(iterator.hasNext()){ ergopdicJSON(iterator.next().getValue()); } } } //json元素爲數組 if(element.isJsonArray()){ JsonArray array = (JsonArray) element; Iterator<JsonElement> iterator = array.iterator(); while(iterator.hasNext()){ ergopdicJSON(iterator.next()); } } //json元素爲字符串或者基本類型 if(element.isJsonPrimitive()){ System.out.println(element); } //json元素爲null if(element.isJsonNull()){ System.out.println(element); } }
以上是使用jsonobject,jsonarray,jsonnull,jsonprimitive來操做解析json文件的例子;接口
如下使用gson進行解析json文件和生成json形式的字符串:element
public class Test5 { public static void main(String[] args) throws Exception{ //建立Person對象用以轉化成json格式的String對象 Person person = new Person("VV", 22); Gson gson = new Gson(); //把Person對象生成json格式的String對象 String jsonString = gson.toJson(person); System.out.println(jsonString); //把json格式的String對象轉化成Person對象 Person person2 = gson.fromJson(jsonString, Person.class); System.out.println(person2.getAge()); //解析指定路徑的json文件,轉化成 FileReader reader = new FileReader(new File("test.json")); Object object = gson.fromJson(reader, Object.class); System.out.println(object); //必定要關閉流 reader.close(); } }
用Gson類來生成json文件:字符串
public static void main(String[] args) throws Exception{ //建立Person對象用以轉化成json格式的String對象 Person person = new Person("VV", 22); Gson gson = new Gson(); //指定json文件路徑 File file = new File("D:"+File.separator+"test.json"); BufferedWriter writer = new BufferedWriter(new FileWriter(file)); gson.toJson(person, writer); //關閉流 writer.close(); }