JSON学习
JSON有六种数值:数值,字符串,数组,对象,布尔值,null;
JSON API把这几种数值分成四种类型:primitive,array,object,null;
以下以gson为例,有四个被操作的对象:JsonObject,JsonPrimitive,JsonArray,JsonNull,他们的父接口都是JsonElement;
JsonObject里面值得注意的是entryset返回含有条目的集合,还有getAsXXX(),这样返回JsonElemnt的其他形式,例如Integer、Char;
JsonPrimitive里面值得注意的是isJsonArray()、isJsonObject()、isJsonNull()、isJsonPrimitive(),还有getAsXXX();
JsonArray:Iterator()用以遍历,getAsXXX();
以下是遍历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形式的字符串:
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();
}
浙公网安备 33010602011771号