我正在嘗試用 Java 制作一個簡單的 JSON-DB,因為 maven 上的當前庫非常復雜。我有這個方法,它接受一個鍵和值來放入 JSONObject 并將其寫入我的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)。
uj5u.com熱心網友回復:
這是一個語法問題。您json無效,因為語法希望您的資料json 位于大括號之間,如下所示:
{
"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 庫將您的物件轉換(序列化)為有效的json.
uj5u.com熱心網友回復:
我通過讀取檔案中的所有內容并將我想要寫入的 JSON 物件附加到檔案中然后一次全部寫入來解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464840.html
