如何比较两个json对象的文件,并避免在json数组中重复

时间:2019-05-07 07:59:16

标签: java json

嗨,我正在尝试比较两个json对象的文件,并且必须在json数组中重复。

下面是我的输入,它是两个json对象的json数组。两个json对象都具有称为 Architectural 的相同标签,因此必须避免, 我想使用文件名数组制作单个json对象,而没有重复和文件大小

在json对象数组中,每个对象可能包含具有不同长度的名称json数组

   [         {
            "bucket": "vanasiri-100-98748-33434346-34545567002",
            "path": "1127/1854/1/BidSet/Architectural_Drawing/",
            "UpdatedBy": "100",                
            "fileSize": ["0"],
            "name": ["Display external company list.docx"],
            "tag": "Architectural",
            "uploadedDate": "03-30-2019"
            }, {
            "bucket": "vanasiri-100-98748-33434346-34545567002",
            "path": "1127/1854/1/BidSet/Architectural_Drawing/",
            "UpdatedBy": "100",               
            "fileSize": ["0"],
            "name": ["images.jfif"],
            "tag": "Architectural",
            "uploadedDate": "03-30-2019"
          }
]

预期结果

[{
     "bucket": "vanasiri-100-98748-33434346-34545567002",
     "path": "1127/1854/1/BidSet/Architectural_Drawing/",
     "UpdatedBy": "100",    
     "fileSize": ["0", "0"],
     "name": ["Display external company list.docx", "images.jfif"],
     "tag": "Architectural",
     "uploadedDate": "03-30-2019"
}]

我该如何实现

2 个答案:

答案 0 :(得分:1)

为您的列表内的JSON对象创建一个Model类,例如BucketData,您可以将JSON数组转换为模型数组列表。

应如下所示:

JSONArray jArray = (JSONArray)jsonObject; 
if (jArray != null) { 
   for (int i=0;i<jArray.length();i++){ 
    listdata.add(jArray.getString(i));
   } 
} 

然后,您可以执行Java 8过滤操作,以过滤出重复的值,如下所示:

List listdata = listdata.stream()
                    .collect(Collectors.collectingAndThen(
                            Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(BucketData:: getTag))),
                            ArrayList::new));

引自https://stackoverflow.com/a/17037364/4597596https://stackoverflow.com/a/55512294/4597596

答案 1 :(得分:0)

我认为,您应该首先将JSON数组转换为SET;一个精确的HASHSET。 HASHSET不允许您存储重复的元素。

现在,如何将数组转换为哈希集?请参阅此论坛上较早的讨论之一-How to convert an Array to a Set in Java