java - gson.toJson(Collection) 的问题

标签 java json collections gson

我在使用 Gson 将集合更改为 Json 对象时遇到问题。这是我的代码:

Collection<BomItem> items = bh.getAllItems();
Iterator<BomItem> itemIterator = items.iterator();

Collection<JsonItem> jsonItems = new Vector<JsonItem>();
JsonItem jsonItem = new JsonItem();

while(itemIterator.hasNext()) {
    BomItem item =  itemIterator.next();
    jsonItem.setItemId(item.getItemId());
    jsonItem.setName(item.getDescription());
    jsonItems.add(jsonItem);
}

System.out.println("json size:" + jsonItems.size());
Gson gson = new Gson();

String json = gson.toJson(jsonItems);
System.out.println("Json: " + json);

这是输出:

09:36:13,846 INFO  [STDOUT] json size:402
09:36:13,849 INFO  [STDOUT] Json: [{"itemId":68073,"name":"Automatically inserted"},{"itemId":68073,"name":"Automatically inserted"},{"itemId":68073,"name":"Automatically inserted"},...}

JsonString 被创建,但仅使用最新的对象,一遍又一遍。我做错了什么?

最佳答案

您不会在循环中重新实例化您的 jsonItem,这意味着您将一遍又一遍地添加对可变对象的相同引用。因此,这些值始终是集合中最后一个对象的值。

JsonItem jsonItem = new JsonItem(); 移至 while 循环内。

关于java - gson.toJson(Collection) 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10478434/

相关文章:

java - 当我捕获异常并记录它时,日志仅显示异常名称,而不是异常堆栈

c# - 使用 json.net 支持 ISupportInitialize

java - 解析 Neo4J 节点/与 JSon 的关系

java - HashSet的迭代顺序

java - 如何绘制非方形刻度线

Java:将多维数组转换或引用为一维数组

Scala:获取 Map.head 元素的键(和值)

java - 使用 HashMap 比较两个不同类型的列表

java - 如何使用 SimpleDateFormat 格式化句子中的西类牙月份?

python - 通过 JSON 将 Django 数据传递到 Highcharts