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