通过调用Java外部库来读取json文件

要读取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();
        }

    }

}

猜你喜欢

转载自blog.csdn.net/zalan01408980/article/details/80558671