【发布时间】:2018-10-24 09:18:40
【问题描述】:
我想使用 JsonObject 和 JsonArrays 手动创建一个 Json 结构,如下所示:
{
"data":[
{
"company_name":"xyz",
"Amount":"$2000",
"Duplicate_amount":"$500"
},
{
"company_name":"abc",
"Amount":"$5000"
},
{
"company_name":"zzz",
"Amount":"$2500",
"Duplicate_amount":"$1000"
}
]
}
上面的 Json 是基于对 Arraylist 的检查生成的。例如:Arraylist [xyz,abc,zzz,xyz,hhh,zzz]。现在我想检查,如果 arraylist 包含重复元素,即这里的“xyz”和“zzz”,那么在 Json 结构中,Duplicate_amount Json 对象将被添加到 Json 中。否则,如果不存在重复项,则仅形成“company_name”和“amount”。整个json格式要这样形成。
怎么做?我有查找重复元素的逻辑。但我似乎无法根据检查找到形成上述 json 的逻辑。
谢谢
更新
到目前为止,我已经尝试过检查。但是下面的代码不起作用并且没有形成适当的 json。解决办法是什么?:
JSONObject root_jsonObj = new JSONObject();
JSONArray jsonArr = new JSONArray();
JSONObject sub_jsonobj= new JSONObject();
Object[] st = AppData.customer_arr.toArray();
for (Object s : st) {
//The if-else is the duplicate checking part here
if (AppData.customer_arr.indexOf(s) != AppData.customer_arr.lastIndexOf(s)) {
try {
sub_jsonobj.put("name",AppData.customer_arr.get(counter));
sub_jsonobj.put("dup_amount",AppData.amt_arr.get(counter));
} catch (Exception e) {
e.printStackTrace();
}
}
else{
try {
sub_jsonobj.put("name",AppData.customer_arr.get(counter));
sub_jsonobj.put("amount",AppData.amt_arr.get(counter));
} catch (Exception e) {
e.printStackTrace();
}
}
jsonArr.put(sub_jsonobj);
counter++;
}
try {
root_jsonObj.put("data", jsonArr);
} catch (Exception e) {
e.printStackTrace();
}
【问题讨论】:
-
将它们转换成pojo,然后使用equals方法进行比较。只需在你的 POJO 中包含 equals 方法。
-
你能举个例子吗?会有帮助的
标签: java android json arraylist