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();
	}
相关文章
相关标签/搜索