JSON 简单 - 编码数组

JSON Simple - Encoding Array

您好,我正在使用 JSON 简单库。 我有一个这样的 JSON 文件:

[
    "string",
    {
        ...
    },
    {
        ...
    }
    ...
]

我解析没有问题。但是当我完成我的应用程序并尝试保存更改时,我无法将字符串添加到新的 JSONArray.

JSONArray array = new JSONArray();
array.add("string");

它给我 add(E) in ArrayList cannot be applied to (java.lang.String) 错误。
JSON数组class中没有put方法。
解决方案可能是将 JSONObject 转换为 JSONArray。但是怎么办?

或者我可以解析文件并更改目录,然后用它覆盖原始文件吗?

看例子2-1
https://code.google.com/archive/p/json-simple/wikis/EncodingExamples.wiki

编辑: 使用下面的代码总是会出错。我相信 JSONArray 对象不用于编码。我改用了 LinkedList。

JSONObject obj = new JSONObject();
JSONArray array = new JSONArray();
array.add("string"); // gives error
array.add(obj); // gives error

您可以添加 Json 对象而不是添加字符串对象。

JSONObject jsonObj = new JSONObject("{\""string",\":\"{}\"}");
JSONArray array = new JSONArray();
array.add(jsonObj);
LinkedList list = new LinkedList(); 
list.add("foo"); 
list.add(new Integer(100)); 
list.add(new Double(1000.21)); 
list.add(new Boolean(true)); 
list.add(null); 
String jsonText = JSONValue.toJSONString(list); 
System.out.print(jsonText);

我们可以创建 LinkedList,而不是创建 JSONArray 对象并向其添加其他对象。

然后按照我们打算使用 JSONArray 对象的方式使用它。最后我们可以将它转换为 JSON 字符串。

问题可能如错误文本所示,JSON扩展 ArrayList 的数组没有模板集。它仍然是默认值 E。因此,当您尝试将对象添加到 ArrayList 时,它会报错,因为该对象不是 E 的实例。并且 JSON 数组 class 不接受模板。

JSONArray<String> array = new JSONArray<String>();

只是行不通。

确保您使用的是正确的 JSONArray。您发布的示例使用

导入org.json.简单.JSONArray;