如何在 java 中写入 JSON 对象之前删除大括号
How to remove curly braces before writing JSON object in java
我正在尝试在 Java 中制作一个简单的 JSON-DB,因为 maven 上的当前库非常复杂。我有这种方法,它接受一个键和值以放入 JSON 对象并将其写入我的 database.json
文件。
public static void put(String path, String key, Object[] value){
//creates new JSONObject where data will be stored
JSONObject jsondb = new JSONObject();
try{
//adds key and value to JSONObject
jsondb.put(key, value);
} catch (JSONException e){
e.printStackTrace();
} //end try-catch
try(PrintWriter out = new PrintWriter(new FileWriter(path, true))) {
out.write(jsondb.toString());
out.write(',');
} catch (Exception e){
e.printStackTrace();
} //end try-catch
} //end put()
这是我的主要方法,我将一些数据写入文件
public static void main(String[] args) throws Exception {
String path = "app.json";
Object[] amogus = {"Hello", 1, 2, 3, 4, 5};
Object[] amogus1 = {"Hello", 1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
JsonDB db = new JsonDB(path);
db.put(path, "arr", amogus);
db.put(path, "arr1", amogus1);
}
发生的事情是它将每个数据保存在一组花括号中。因此,当我像在 main 方法中那样多次写入文件时,它会像这样保存它:
{"arr": ["Hello", 1, 2, 3, 4, 5]}{"arr1": ["Hello", 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]}
这导致 VSCode 抛出错误,因为这无效 JSON。我如何使该方法删除花括号并添加逗号以使上面的 JSON 有效 JSON?我似乎找不到该库的文档(该库在 Maven 上 org.json)。
这是语法问题。你的 json
不是 valid because the json
syntax 希望你的数据像这样放在花括号之间:
{
"arr": ["Hello", 1, 2, 3, 4, 5],
"arr1": ["Hello", 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
}
而不是这个,它不是有效的 json
:
{"arr": ["Hello", 1, 2, 3, 4, 5]}
{"arr1": ["Hello", 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]}
在您的地图对象中创建您的数据,并让您的 json
library 以有效的 json
.
转换(序列化)您的对象
我通过读取文件中的所有内容并将我想写入的 JSON 对象附加到文件然后一次写入所有内容来解决这个问题。
我正在尝试在 Java 中制作一个简单的 JSON-DB,因为 maven 上的当前库非常复杂。我有这种方法,它接受一个键和值以放入 JSON 对象并将其写入我的 database.json
文件。
public static void put(String path, String key, Object[] value){
//creates new JSONObject where data will be stored
JSONObject jsondb = new JSONObject();
try{
//adds key and value to JSONObject
jsondb.put(key, value);
} catch (JSONException e){
e.printStackTrace();
} //end try-catch
try(PrintWriter out = new PrintWriter(new FileWriter(path, true))) {
out.write(jsondb.toString());
out.write(',');
} catch (Exception e){
e.printStackTrace();
} //end try-catch
} //end put()
这是我的主要方法,我将一些数据写入文件
public static void main(String[] args) throws Exception {
String path = "app.json";
Object[] amogus = {"Hello", 1, 2, 3, 4, 5};
Object[] amogus1 = {"Hello", 1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
JsonDB db = new JsonDB(path);
db.put(path, "arr", amogus);
db.put(path, "arr1", amogus1);
}
发生的事情是它将每个数据保存在一组花括号中。因此,当我像在 main 方法中那样多次写入文件时,它会像这样保存它:
{"arr": ["Hello", 1, 2, 3, 4, 5]}{"arr1": ["Hello", 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]}
这导致 VSCode 抛出错误,因为这无效 JSON。我如何使该方法删除花括号并添加逗号以使上面的 JSON 有效 JSON?我似乎找不到该库的文档(该库在 Maven 上 org.json)。
这是语法问题。你的 json
不是 valid because the json
syntax 希望你的数据像这样放在花括号之间:
{
"arr": ["Hello", 1, 2, 3, 4, 5],
"arr1": ["Hello", 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
}
而不是这个,它不是有效的 json
:
{"arr": ["Hello", 1, 2, 3, 4, 5]}
{"arr1": ["Hello", 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]}
在您的地图对象中创建您的数据,并让您的 json
library 以有效的 json
.
我通过读取文件中的所有内容并将我想写入的 JSON 对象附加到文件然后一次写入所有内容来解决这个问题。