JSON简单 - 编码数组

时间:2016-02-05 13:16:34

标签: java json json-simple

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

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

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

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

它给了我add(E) in ArrayList cannot be applied to (java.lang.String)错误 JSONArray类中没有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

3 个答案:

答案 0 :(得分:0)

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

JSONObject jsonObj = new JSONObject("{\""string",\":\"{}\"}");
JSONArray array = new JSONArray();
array.add(jsonObj);

答案 1 :(得分:0)

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);

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

然后使用它,因为我们打算使用JSONArray对象。最后我们可以将它转换为JSON字符串。

问题可能与错误文本提示的一样,扩展ArrayList的JSONArray没有模板集。它仍然是默认E。因此,当您尝试将对象添加到ArrayList时,它会给出错误,因为该对象不是E的实例。 JSONArray类不接受模板。

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

只是不起作用。

答案 2 :(得分:0)

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

import org.json。 simple .JSONArray;