gpt4 book ai didi

java - JSON 将只加载一个值

转载 作者:行者123 更新时间:2023-12-02 03:17:32 24 4
gpt4 key购买 nike

问题是 JSON 在 load 方法中读取文件时。我会在评论中描述。注意:为了更清晰的 View ,省略了许多代码

private static final String ID = "moti_data";

public static void save(Context context) throws IOException, JSONException {
JSONArray arr = new JSONArray();
JSONObject obj = new JSONObject();
for (int i = 0; i < notify1.length; i++)
obj.put("n1_" + i, notify1[i]);
arr.put(obj);
//while testing ar.toString() was arr[{"n1_0":1,"n1_1":15,"n1_2":23,"n1_3":0}]
//it is clear that it contains 4 values but arr.length() will give 1
String file = arr.toString();
FileOutputStream output = context.openFileOutput(ID, MODE_PRIVATE);
output.write(file.getBytes());
output.close();
}

然后加载方法中仍然存在问题,因为我只能从中获取一个值。此外,所有其他值都不正确 - 0。因此,当我设法将其表达几分钟时,输出为 arr[{"n1_0":1,"n1_1":0,"n1_2":0,"n1_3":0} ]。 S0 只是第一个值是正确的

public static void load(Context context) throws IOException, JSONException {
//reading data
FileInputStream input = context.openFileInput(ID);
BufferedInputStream bi = new BufferedInputStream(input);
StringBuffer buffer = new StringBuffer();
while (bi.available() != 0) {
char c = (char) bi.read();
buffer.append(c);
}
bi.close();
input.close();
//JSON
JSONArray data = new JSONArray(buffer.toString());
for (int i = 0; i < data.length(); i++)
notify1[i] = data.getJSONObject(i).getInt("n1_" + i);
}

所以无论我做什么/已经尝试过,我都会得到一个循环和 json 异常。但正如我最初认为的,问题不在于储蓄,因为产出很好。还是我错了?

EDDIT:代码中有 6 个 block ,每 block 4 个值(为了清楚起见,这里仅列出一个)。我也无法对它们进行硬编码,因为值是由用户更改的

最佳答案

您的 JSONArray 仅包含一个 JSONObject:

[
{ "n1_0":1,
"n1_1":15,
"n1_2":23,
"n1_3":0
} //finish data.getJSONObject(0);
]

要访问 JSONObject 上的每个值,您应该执行以下操作:

JSONObject object = data.getJSONObject(0);
for (int i = 0; i < data.length(); i++)
notify1[i] = object.getInt("n1_" + i);

我使用https://jsonformatter.curiousconcept.com以清晰的方式查看 JSON 层次结构。希望我能解决您的问题。

关于java - JSON 将只加载一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com