使用BufferedReader中的JSONArray.put(String)时出现意外结果



我从JSONArray.put(String)得到了意外的结果。

我的代码:

public JSONArray readedID = new JSONArray();
public void load() throws IOException, JSONException {
    String FILENAME = "news";
    String line;
    InputStream inputStream = openFileInput(FILENAME);
    InputStreamReader isr = new InputStreamReader(inputStream);
    BufferedReader reader = new BufferedReader(isr);
    while ((line = reader.readLine()) != null) {
        readedID.put(line);
    }
    inputStream.close();
    Log.d("vk", "news.readedID: "+readedID);
    TextView res = (TextView)findViewById(R.id.textView);
    res.setText("readedID: "+readedID);
}
public void save() throws IOException {
    String FILENAME = "news";
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
    fos.write(news.loadedID.toString().getBytes());
    fos.close();
}
// Fill loadedID
for (int i = 0; i < json.length(); i++){
    loadedID.put(json.getJSONObject(i).get("id").toString());
}

这里是loadedID:

["3316","3336","3335","3331","3327","3326","3319".... ]

这就是我对readedID:的期望

["3316","3336","3335","3331","3327","3326","3319" .... ]

但这就是我得到的:

[""3316","3336","3335","3331","3327","3326","3319" .... "]"]

为什么会发生这种情况?

嗯。。。这是因为您将列表项设置为字符串。

现在每个"变成一个\",所以它是一个字符。

只需将旧的JSONArray替换为新的:

readedID = new JSONArray(line);

或者,如果你愿意,你可以添加一个项目。

(很抱歉写错了,我在智能手机上)

最新更新