Java没有从list.toArray()返回数组对象

时间:2015-10-28 14:31:56

标签: java arrays json list

我有一个movie课程 那有一个private List<String> reviews = new ArrayList<String>();

在我设置的构造函数

public Movie()
{
    this.reviews.add("");
}

当我尝试将其添加到JSON对象时,

JSONObject.put("reviews", this.reviews.toArray(new String[reviews.size()]));

我检查了JSON文件并返回"reviews":[Ljava.lang.String;@5cad8086]

这里发生了什么?我想在“{"reviews" : ["somestring1", "somestring2"]}

之类的”评论“字段中添加一系列评论

2 个答案:

答案 0 :(得分:0)

json-simple显然不支持直接向JSONObject添加数组类型。将JSONObject呈现为String时,只需在其值上调用toStringJSONObjectHashMap)。

因此,您会看到在数组类型上调用String的默认toString结果。见

使用json-simple的最合适的解决方案是从JSONArray创建List对象并添加

JSONArray array = new JSONArray();
array.addAll(reviews);
JSONObject.put("one", array);

假设JSONObject是引用JSONObject对象的变量。

我认为json-simple是一个糟糕的JSON解析器/生成器库。在Gson,Jackson甚至org.json中有更好的选择。

答案 1 :(得分:-1)

你必须使用它:

Arrays.toString(this.reviews.toArray(new String[reviews.size()]));