这是我在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();
}
}
它不起作用,我该怎么办?请指教
答案 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'
}