首页 > 解决方案 > 如何将对象添加到 JSONArray

问题描述

我想将一个对象添加到数组中。如果 的数据other_amount大于零,我想再添加一个对象。如果它等于零,它应该什么都不加。这是我的代码:

JSONArray acc_data = new JSONArray();
Map<String, Object> myaccount = new LinkedHashMap<>();
for (int i = 0; i < mpay.size(); i++) {
    if(other_amount>0){
        myaccount.put("poAccount", other_account);
        myaccount.put("poAmount", other_amount);
        system.out.println(myaccount);
        //{poAccount=050017, poAmount=12}
    }

    myaccount.put("poAccount", amount_account);
    myaccount.put("poAmount", amount);
    system.out.println(myaccount);
    //{"poAccount":"050016","poAmount":"800"}

    acc_data.add(myaccount);
    system.out.println(acc_data);
    //[{"poAccount":"050016","poAmount":"800"}]
}

但我需要这样:

//[{"poAccount":"050016","poAmount":"800"},{poAccount=050017, poAmount=12}]

请帮我解决它。

标签: javajsonobjectarraylistarrayobject

解决方案


你不应该在你的情况下使用地图。当您将现有的对放在映射键中时,该对将被覆盖。例如

map.put ("k1","v1");

映射包含一对 "k1":"v1" 下一个调用

map.put ("k1","newV1");

第一对将被覆盖,地图仍然包含一对:“k1”:“newV1”

对于您的情况,最好使用 2 个字段poAccountpoAmount. 并将它们添加到 JSONArray


推荐阅读