如何使用Java在现有Json文件上附加数据?

时间:2018-05-18 00:54:43

标签: java json file

这是我在Json文件中调用的当前Json数据 student.json

{"name":"Mahesh","age":10}

我想附加到以下数据,输出应该是这样的

{"name":"Mahesh","age":10}, {"name":"BROCK","age":3}, {"name":"Joe","age":4}

这是我目前的代码

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;  

public class JsonWritingProject
{

    public static void main(String[] args)
    {
        JSONObject main = new JSONObject();

        JsonParser jsonParser = new JsonParser();

        try
        {
            Object obj = jsonParser.parse(new FileReader("student.json"));

            JSONObject jsonObject = (JSONObject) obj;

            jsonObject.put("BROCK", 3);
            jsonObject.put("Joe", 4);
            System.out.println(jsonObject.toString());
        } catch (JsonIOException | JsonSyntaxException | FileNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



       } 

它不起作用,我该怎么办?请指教

1 个答案:

答案 0 :(得分:0)

更新

哦,似乎我忘了发布原始的json文件。请将student.json放在以下内容中:(需要用[& ]换行以使其成为数组)

[{"name":"Mahesh","age":10}]

因为你不能只是将对象附加到原始对象,它将违反JSON语法,使其正确的方法是将它们放入数组中。

原始答案

您应该更改为使用数组来存储多个对象。并使用FileWriter输出。

请尝试此代码,它适用于我的locl env:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import java.io.*;

public class JsonWritingProject {

    public static void main(String[] args) {
        JSONParser jsonParser = new JSONParser();

        try {
            Object obj = jsonParser.parse(new FileReader("D:\\student.json"));
            JSONArray jsonArray = (JSONArray)obj;

            System.out.println(jsonArray);

            JSONObject student1 = new JSONObject();
            student1.put("name", "BROCK");
            student1.put("age", new Integer(3));

            JSONObject student2 = new JSONObject();
            student2.put("name", "Joe");
            student2.put("age", new Integer(4));

            jsonArray.add(student1);
            jsonArray.add(student2);

            System.out.println(jsonArray);

            FileWriter file = new FileWriter("D:\\student.json");
            file.write(jsonArray.toJSONString());
            file.flush();
            file.close();

        } catch (ParseException | IOException e) {
            e.printStackTrace();
        }

    }
}

库依赖是:

dependencies {
    compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1'
}