删除JSONArray中基本唯一JSONObjects中的重复项

时间:2017-11-29 10:18:42

标签: java android json

如何在 JSONObjects java android中删除重复的 JSONArray

我有这个代码而且我不知道如何删除重复项,根据数组字符串对象的数量和时间的重复值,但是我不知道怎么做,我对数组有点困惑

 [
    {
        "isChecked": true,
        "name": "weber",
        "number": "+1912123456789",
        "time": "28 nov., 08:06 PM",
        "type": "all"
    },
    {
        "isChecked": true,
        "name": "weber",
        "number": "+1912123456789",
        "time": "28 nov., 08:06 PM",
        "type": "all"
    },
    //Duplicatedhowremovethisifnumberisequalandtime{
        "isChecked": true,
        "name": "weber",
        "number": "+1912123456789",
        "time": "28 nov., 08:07 PM",
        "type": "all"
    }
]

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

默认情况下,JSON解析器允许重复,因此没有直接的方法来删除重复项。但是,有办法解决这个问题。您可以针对架构验证JSON。

如果使用Jackson,这里的设置将帮助您检测重复项:

     final ObjectMapper mapper = new ObjectMapper();
     mapper.enable(JsonParser.Feature.STRICT_DUPLICATE_DETECTION);

答案 1 :(得分:0)

您需要使用设置数据结构。设置商店唯一对象。如果您有自定义对象,则需要覆盖equals方法和哈希码方法。

答案 2 :(得分:0)

我得到了解决方案,我与你分享了

    String getloglist = sp.getString(Constant.LOG, "");

    ArrayList<String> listdata = new ArrayList<String>();
    try {
        // Load the data from json
        JSONArray jsonArraylogs= new JSONArray(getloglist);

        if (jsonArraylogs != null) {
            for (int i=0;i<jsonArraylogs.length();i++){
                listdata.add(jsonArraylogs.getString(i));
                //Toast.makeText(context, ""+listdata+"", Toast.LENGTH_SHORT).show();
            }
        }


    } catch (JSONException e) {
        Toast.makeText(context, "error", Toast.LENGTH_SHORT).show();

        e.printStackTrace();
    }

    //Toast.makeText(context, ""+listdata+"", Toast.LENGTH_SHORT).show();

    ArrayList<String> values=new ArrayList<String>();
    HashSet<String> hashSet = new HashSet<String>();
    hashSet.addAll(listdata);
    listdata.clear();
    listdata.addAll(hashSet);

    Toast.makeText(context, ""+listdata+"", Toast.LENGTH_SHORT).show();