您好我正在使用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
答案 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;