解析JSON

JSON:JavaScript Object Notation ,JS对象简谱 , 是一种轻量级的数据交换格式.

本文讲解使用GSON解析JSON

Gson的使用前提:导入gson的jar包


思路:把JSON字符串转成Java对象

主要的方法:

  • Gson fromJson(String jsonString,Object)
    用于把json字符串转换成java对象
  • String toJson(Object obj)
    把obj对象变成json字符串

解析json字符串

首先创建一个用于解析的字符串.这里用对象创建,创建后把结果写入文件.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class TestJSON {
@Test
public void testJSON() throws IOException {
Per p=new Per("Alice",23);
//创建json对象
Gson gson = new Gson();
//获取对象p的json字符串
String json = gson.toJson(p);
System.out.println(json);
//写入文件
File file=new File("E:\\CSOURCE\\Kaikeba\\lib\\test\\test\\test1.json");
PrintStream ps=new PrintStream(file);
ps.println(json);
ps.close();
}
//用于创建Json字符串的类
class Per{
String name="NULL";
int age=-1;
public Per(String name, int age) {
this.name = name;
this.age = age;
}
public Per() {
}
@Override
public String toString() {
return "Per{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}

输出的内容:


从json文件获取json字符串后进行解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void testJSON() throws IOException {
File file=new File("E:\\CSOURCE\\Kaikeba\\lib\\test\\test\\test1.json");
//由json文件创建对象
Per p2=new Per();
//打印默认值
System.out.println("默认值:"+p2);
//获取带缓存的字符输入流
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
//解析json字符串并将数据写入对象p2
String s=br.readLine();
p2=gson.fromJson(s,Per.class);
System.out.println("由json文件读入的对象数值:"+p2);
}

解析数组

1
2
3
4
5
6
7
8
9
10
11
12
@Test
public void analysisJSON(){
//创建JSON对象
Gson gson=new Gson();
//转换 {"id":[100,104,105,233,256]}
HashMap data=gson.fromJson("{\"id\":[100,104,105,233,256]}",HashMap.class);
List id= (List) data.get("id");
//遍历列表
for(Object o:id){
System.out.println(o);
}
}