获取JSONArray并写入JSONArray

时间:2017-04-07 20:01:46

标签: java json java-8

我有以下对象:

{
  "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]

我不确定什么是真的错,我知道我的代码很糟糕但是那就是它。

1 个答案:

答案 0 :(得分:0)

看起来错误在第JSONArray uuidArray = new JSONArray(uuid);行?

因为prevoius行JSONArray mutedPlayers = configData.getJSONArray("some_list");应该可以正常工作。 如果是这样,那么你不会将数组传递给new JSONArray(uuid),因为uuid是你的整个JSON对象。