я получил в JSON, как показано нижеКак динамически удалить дубликаты JSON объекта из JSON массива строк
{
"brands": [
{
"name": "ACC",
"quantity": "0",
"listedbrandID": 1,
"status": "0"
}
],
"others": [
{
"name": "dd",
"quantity": "55",
"listedbrandID": 1
},
{
"name": "dd",
"quantity": "55",
"listedbrandID": 1
}
]
}
Я пытаюсь удалить dupcate объекты JSON из массива Других
Я пытался его это способ
String JSON = "{
"brands": [
{
"name": "ACC",
"quantity": "0",
"listedbrandID": 1,
"status": "0"
}
],
"others": [
{
"name": "dd",
"quantity": "55",
"listedbrandID": 1
},
{
"name": "dd",
"quantity": "55",
"listedbrandID": 1
}
]
}" ;
JSONObject json_obj = new JSONObject(json);
JSONArray array = json_obj.getJSONArray("others");
HashSet<Others> map = new HashSet<Others>();
for (int k = 0; k < array.length(); k++) {
Others otherbrands = new Others();
String name = array.getJSONObject(k).getString("name");
String quantity = array.getJSONObject(k).getString("quantity");
String listedbrandID = array.getJSONObject(k).getString("listedbrandID");
if(name!=null && !name.trim().equals(""))
{
otherbrands.setName(name);
otherbrands.setQuantity(quantity);
otherbrands.setListedbrandID(listedbrandID);
map.add(otherbrands);
}
}
for (int k = 0; k < array.length(); k++)
{
String name = array.getJSONObject(k).getString("name");
System.out.println(name);
if(!map.contains(name.trim()))
{
array.remove(k);
}
}
System.out.println(json_obj);
}
}
import java.util.Arrays;
public class Others {
private String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
public String getListedbrandID() {
return listedbrandID;
}
public void setListedbrandID(String listedbrandID) {
this.listedbrandID = listedbrandID;
}
private String quantity ;
private String listedbrandID ;
@Override
public boolean equals (Object other)
{
if (!(other instanceof Others))
return false;
Others ob = (Others) other;
return name.equals(ob.name) &&
quantity.equals(ob.quantity);
}
@Override
public int hashCode()
{
return Arrays.hashCode(new String[]{quantity,name});
}
}
Но его печать всего JSON
Узнайте, как сохранить отступы в соответствии - это затрудняет чтение этого вопроса. –
@AlexisC. так как решить это? – Pawan
Почему у вас есть 'if (! Map.contains (name.trim()))' на первом месте? Ваша «карта» - это «HashSet», поэтому вызов содержит строку String, не имеет смысла. (BTW это очень плохое имя для набора) –