我有以下对象:
{
"some_prop": "sweetvalue",
"some_list": ["0f9f822cd7e64000ac056ebc17b82f1d", "0f9f82223094fj7b82f1d"]
}
我尝试获取some_list
并写入some_list
,然后保存到文件中。使用以下代码:
public String getData(String key) { // this is confusion should be getConfigValue
String data = getConfig();
JSONObject jsonData;
Object content = null;
try {
jsonData = new JSONObject(data);
if (key != null) {
content = jsonData.getString(key);
} else {
content = jsonData.toString();
}
} catch (JSONException e) {
e.printStackTrace();
}
return content.toString();
}
private void saveFile(String data) {
File file = configFile;
try (FileOutputStream fop = new FileOutputStream(file)) {
if (!file.exists()) file.createNewFile();
byte[] contentInBytes = data.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void appendToArrayValue(String uuid) {
JSONObject configData = new JSONObject(getConfig());
JSONArray mutedPlayers = configData.getJSONArray("some_list");
JSONArray uuidArray = new JSONArray(uuid);
JSONArray newArray = concatArray(mutedPlayers, uuidArray);
JSONObject newConfigData = configData.put("some_list", newArray);
saveFile(newConfigData.toString());
}
尝试运行此代码时,出现以下错误:
org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
我不确定什么是真的错,我知道我的代码很糟糕但是那就是它。
答案 0 :(得分:0)
看起来错误在第JSONArray uuidArray = new JSONArray(uuid);
行?
因为prevoius行JSONArray mutedPlayers = configData.getJSONArray("some_list");
应该可以正常工作。
如果是这样,那么你不会将数组传递给new JSONArray(uuid)
,因为uuid是你的整个JSON对象。