JSON學習

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();
	}
相關文章
相關標籤/搜索