JSON:

下载组件 GSON jar 包

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
https://mvnrepository.com/artifact/com.google.code.gson/gson

创建JSON

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

import java.io.*;
import java.util.ArrayList;


public class Demo {
    public static void main(String[] args) throws IOException {
        createJson();
    }
    public static void createJson(){
        ArrayList<Person> list = new ArrayList<>();
        list.add(new Person("花花",10));
        list.add(new Person("哈哈",12));
        JsonArray jsonElements = new JsonArray();
        for (int i = 0; i < list.size(); i++) {
            JsonObject jsonObject = new JsonObject();
            jsonObject.addProperty("name",list.get(i).getName());
            jsonObject.addProperty("age",list.get(i).getAge());
            jsonElements.add(jsonObject);
        }
        //
        System.out.println(jsonElements.toString());
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter("a.json"));
            bw.write(jsonElements.toString());
            bw.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
class Person{
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public Person() {
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

  

解析json数据

必须严格准守解析流程,中途如果出现错误,就会发生解析失败

[]  : beginArray;

{} : beginObject;

import com.google.gson.stream.JsonReader;
import java.io.*;
import java.util.ArrayList;

public class Demo {
    public static void main(String[] args){
        jsonParse();
    }
    public static void jsonParse(){
        try {
            InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("json\\person_json.json");
            InputStreamReader inputStreamReader = new InputStreamReader(resourceAsStream);
            //json解释工具a
            JsonReader jsonReader = new JsonReader(inputStreamReader);
            ArrayList<Person> nameList = new ArrayList<>();
            //开始解析数组
            jsonReader.beginArray();
            while (jsonReader.hasNext()){
                nameList.add(parsePerson(jsonReader));
            }
            //结束解析数组
            jsonReader.endArray();
            nameList.forEach((p)-> System.out.println(p));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private static Person parsePerson(JsonReader jsonReader) throws IOException {
        Person person = new Person();
        jsonReader.beginObject();
        while (jsonReader.hasNext()){
            String name = jsonReader.nextName();
            if ("name".equals(name)){
                //遇到字符串了,必须要nextString()掉,即使什么都不做,也必须要写
                //否则会报错
                person.setName(jsonReader.nextString());
            }else if("age".equals(name)){
                person.setAge(Integer.parseInt(jsonReader.nextString()));
            }
        }
        jsonReader.endObject();
        return person;
    }
}
class Person{
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

  

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄