由于当时本人水平很渣,实际没怎么麻烦。不要用这种写法。
使用GSON来解析JSON数据需要下载。
"{"student": [ {"name": "张三","age": 18},{"name": "李四","age": 19},{"name": "王五","age": 20}]}"
用gson解析以上字符串输出,将并其转化成实体类对象,然后放入List容器中并遍历然后输出。
以下下为实体类,为了方便观察重写toString()方法。
public class Student { private String name; private int age; public String toString(){ return name+age; }}
以下为解析的类:
public class JsonRead { @SuppressWarnings({ "rawtypes", "unchecked" }) public static void main(String[] args) { String json="{\"student\": [ { \"name\": \"张三\", \"age\": 18}, { \"name\": \"李四\", \"age\": 19},{\"name\": \"王五\",\"age\": 20}]}"; Gson gson=new Gson(); JsonParser parser=new JsonParser();//构造JSON解析器 JsonObject object=parser.parse(json).getAsJsonObject();//生成JSON对象// String name=object.get("name").getAsString();//这个是获取单个值得方法 JsonArray array=object.get("student").getAsJsonArray();//获取JSON数组的方法. for(int i=0;i(); for(int i=0;i
以下为生成JSON的类
public class CreateJson { public static void main(String[] args) { JsonObject object=new JsonObject();//创建一个JsonObject对象 object.addProperty("name", "张三");//添加一个属性 JsonArray array=new JsonArray(); JsonObject student1=new JsonObject(); student1.addProperty("name", "哈士奇");//为JsonObject对象添加属性 student1.addProperty("age", 3); array.add(student1); JsonObject student2=new JsonObject(); student2.addProperty("name", "金毛"); student2.addProperty("age", 6); array.add(student2); object.add("student", array);//添加一个数组 System.out.println(object.toString()); }}
一下为List集合生成json类
public class JSON { @SuppressWarnings("rawtypes") public static String createJson(List t){ Gson gson=new Gson(); JsonObject jsonobject=new JsonObject(); JsonArray array=new JsonArray(); Iterator listIter=t.listIterator(); if(listIter.hasNext()) { Object obj=listIter.next(); jsonobject=(JsonObject) gson.toJsonTree(obj); array.add(jsonobject); } return array.toString(); }}
总结:
在解析json时首先创建一个json解析器。然后通过解析器解析json数据并生成json对象
JsonObject object=parser.parse(json).getAsJsonObject();//红色部分可以换成输入流网络流
gson.toJson(
123
, System.out);//这是一种生成json数据简单的方式
Student student=gson.fromJson(subObject, Student.class);//这是通过反射的方式构建实体类
学习记录,如有错误欢迎指正。