2014-10-31 106 views
3

我正在使用gson在Java中创建JSON对象。我试图让一个数组包含三个元素:使用Gson创建数组

[ "ONE", "TWO", "THREE" ] 

有了这个代码:

JsonArray array = new JsonArray(); 
    array.add("ONE"); 
    array.add("TWO"); 
    array.add("THREE"); 

add()只接受JsonElement对象,而不是实际的字符串。


的原因我的印象是我应该能够做到这一点,是因为我用打电话过去SimpleJSON与Unity3D一个C#脚本。有了它,我可以做到这一点:

JSONArray ary = new JSONArray(); 
    ary.Add("ONE"); 
    ary.Add("TWO"); 
    ary.Add("THREE"); 

这工作正常。我只是不确定如何用gson来做到这一点。


我知道可以转换 Java数组成JSON对象:

String[] strings = {"abc", "def", "ghi"}; 
gson.toJson(strings); ==> prints ["abc", "def", "ghi"] 

然而,我想动态createobjects在JsonArray(该Add方法),如我可以与C# 。

回答

1

有一个替代方案可以用List这样做,这很容易操作。
您可以添加String s到一个List,然后从它创建一个JSON:

List<String> list = new ArrayList<String>(); 
list.add("ONE"); 
list.add("TWO"); 
list.add("THREE"); 

Gson gson = new Gson(); 
String array = gson.toJson(list); 
1

你可以这样做:

JsonArray array = new JsonArray(); 
array.add(new JsonPrimitive("ONE")); 
array.add(new JsonPrimitive("TWO")); 
array.add(new JsonPrimitive("THREE")); 
1

array.add(gson.toJsonTree( “1”));