2016-02-05 68 views
0

嗨我正在使用JSON简单库。 我有一个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

你应该使用jsonObj而不是String对象来检查这个[POST](http://stackoverflow.com/questions/13963751/json-add-to-jsonarray-issue)。 – NAIT

+0

@NAIT不,还是一样的问题。添加功能不起作用。 – ossobuko

+0

你可以发表你试过的东西吗? – NAIT

回答

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

只是不行。

0

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

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

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

import org.json。 简单 .JSONArray;

+0

这是我检查的第一件事。 – ossobuko