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(); }