要读取json文件,我们可以先登录json官网,然后下载他的google-gson的Java外部库,然后在将他导入的Java项目中去,最后可以调用这个库对json文件进行读取的操作了,
首先要对json文件进行操作,先要理清楚该怎么操作。下面我来讲讲该怎么对json文件进行读取的操作。
- 首先创建一个Json的解析器,使用new JsonParser(),返回值是一个JsonParser对象。
- 然后在对文件进行读取,调用JsonParser的parse方法,其中的参数可以是个json格式的字符串,或者是一个reader 数据,但是如果是个读取文件的话,那么它的参数就应该是new FileReader(“文件的地址+名称”)。parse方法的返回值是JsonObject对象。
- 第三是调用JsonObject对象的get方法获取根元素的键值对的值。在根据键值对的键值的键名获取值得时候,要根据值得类型调用getAsString或者其他的一下转换数据类型的方法。最后就得到了值。
- 如果json文件存在数组,那么还需要调用getJsonArray的方法获取到数组的值,再通过循环分别获取数组中的值。
- 通上面的一样,如果数组中还有数组的话,就继续使用getJsonArray方法进行读取,并用循环显示出来。
下面就是详细的代码:
readJson.json
{
"cat":"it",
"language":[
{"id":1,"ide":"eclipse","lan":"java"},
{"id":2,"ide":"X-code","lan":"Swift"},
{"id":3,"ide":"Visual Studio","lan":"C#"}
],
"pop":true
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
testJson.java
package com.readXml.gson;
import java.io.FileNotFoundException;
import java.io.FileReader;
import com.google.gson.JsonArray;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
public class testGson {
public static void main(String[] args) {
try {
JsonParser parser=new JsonParser();//创建解析器
JsonObject object=(JsonObject)parser.parse(new FileReader("readJson.json"));//创建一个JsonObject对象,并调用解析器的parse方法进行读取文件,返回值的类型是JsonElement,但是赋值的对象是一个JsonObject所以要进行类型的强制转换。
System.out.println("cat="+object.get("cat").getAsString());//先调用JsonObject的get方法,参数为json的键的值,然后再根据数据的类型调用getAsString或者getAsboolean方法
System.out.println("pop="+object.get("pop").getAsBoolean());
// 注意Json文件,如果json文件的格式有问题,可能就会导致出现json语法异常;
JsonArray array=object.get("language").getAsJsonArray();
for (int i = 0; i <array.size(); i++) {
System.out.println("-------------");
JsonObject arrayObject=array.get(i).getAsJsonObject();
System.out.println("id="+arrayObject.get("id").getAsInt());
System.out.println("ide="+arrayObject.get("ide").getAsString());
System.out.println("lan="+arrayObject.get("lan").getAsString());
}
} catch (JsonIOException e) {
e.printStackTrace();
} catch (JsonSyntaxException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}