Java解析json数据并修改本地json文件中的数据

1.为什么要操作json数据

在我们平常的练习中,在不能用数据库的情况下,我们一般会把模拟数据存放在本地的json文件中,但是平常我们要对其进行修改与增加是非常困难的,其中包含了解析数据,修改数据,然后再写入数据。但是又迫于老师的压力,不得不使用该方案,说多了都是泪啊害......

2.进入正题

(1)第一步就是要解析数据

关于如何解析json数据,我的上一篇博客中详细讲解了操作流程,可以转到那边瞅瞅

地址贴这里了:Java GUI实现登录注册业务,并将用户信息存储到本地JSON文件中(保姆级教程,从新建项目到运行项目)_jack不想秃头的博客-CSDN博客

(2)既然要修改数据,那我们就肯定需要一些原有的数据,此时我们可以模拟一些基本的用户数据,在本地新建一个data.json文件,手写一些数据

[
  {
    "id": 1,
    "name": "John",
    "age": 25
  },
  {
    "id": 2,
    "name": "Lucy",
    "age": 35
  },
  {
    "id": 3,
    "name": "Bob",
    "age": 35
  }
]

(3)要有数据,肯定需要在新建关于该数据的Javabean,关于Java如何创建,在上一篇博客中也提到了,大家不会的可以去那边看。


class Data {
    private int id;
    private String name;
    private int age;

    public void setId(int id) {
        this.id = id;
    }

    public Data() {
    }

    public Data(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

(4)最后一步就是修改数据,然后将新数据写入原来的json文件中即可

核心代码:

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.*;
import java.util.ArrayList;

public class update {
    public static void main(String[] args) {
        //读取用户数据存放到ArrayList集合当中
        try (BufferedReader br = new BufferedReader(new FileReader("data.json文件地址"))) {
            String json = "";
            String line;
            while ((line = br.readLine()) != null) {
                json += line + "\n";
            }
            Gson gson = new Gson();
            ArrayList<Data> dataList = gson.fromJson(json, new TypeToken<ArrayList<Data>>() {
            }.getType());
            //修改用户数据
            int index = 0;//用户的下标
            dataList.get(index).setName("zs");//设置用户的新信息
            dataList.get(index).setAge(18);
            String jsonString = gson.toJson(dataList); // 将List<User>对象转换为JSON字符串
            //将新数据写入data.json文件中(此时修改原有的数据,但其他数据不会改变)
            File file = new File("data.json文件地址");
            BufferedWriter writer = null; // 创建BufferedWriter对象
            try {
                writer = new BufferedWriter(new FileWriter(file));
                writer.write(jsonString); // 将JSON字符串写入文件
                writer.close(); // 关闭BufferedWriter对象
                System.out.println("数据修改成功");
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这里最主要的部分就是要将原来的ArrayList集合通过gson的toJson方法,将其转换为json字符串,其中idnex是用户的下标,这个可以灵活控制,文件写入也是用的最基本的File 配合 BufferedWriter,运行代码之后就可以看到json文件已经发生了变化,原来“John”已经被“zs”给覆盖了。

 至此,修改本地json文件数据就结束了。

猜你喜欢

转载自blog.csdn.net/m0_64642443/article/details/131067170