JSONArray data = JSONObject.parseObject(builder.toString()).getJSONArray("data"); data数组里面每个元素都有一个USER_ID字段,data数组中可能存在有多条USER_ID一样的数据,这种情况下就筛选data中JOB_TYPE = 10的数据作为唯一的数据.这个该如何实现呢
时间: 2024-03-20 20:42:58 浏览: 73
fastjson-1.2.74.jar和fastjson-1.2.60.jar
可以按照以下步骤实现:
1. 首先,将所有数据按照USER_ID进行分组,将同一USER_ID的数据放入同一个List中,并将这些List存入一个Map中。
2. 遍历Map中的每个List,如果该List中只有一条数据,则将该数据作为唯一的数据;如果该List中有多条数据,则需要筛选出JOB_TYPE为10的数据作为唯一的数据。
3. 筛选JOB_TYPE为10的数据时,可以通过遍历List,依次判断每条数据的JOB_TYPE是否为10,如果是则将其设为唯一的数据,然后跳出循环;如果没有找到JOB_TYPE为10的数据,则将第一条数据设为唯一的数据。
以下是示例代码:
```java
Map<String, List<JSONObject>> userDataMap = new HashMap<>();
JSONArray dataArray = JSONObject.parseObject(builder.toString()).getJSONArray("data");
for (int i = 0; i < dataArray.size(); i++) {
JSONObject userData = dataArray.getJSONObject(i);
String userId = userData.getString("USER_ID");
if (!userDataMap.containsKey(userId)) {
userDataMap.put(userId, new ArrayList<>());
}
userDataMap.get(userId).add(userData);
}
List<JSONObject> uniqueDataList = new ArrayList<>();
for (List<JSONObject> userList : userDataMap.values()) {
JSONObject uniqueData;
if (userList.size() == 1) {
uniqueData = userList.get(0);
} else {
uniqueData = userList.get(0);
for (JSONObject userData : userList) {
if (userData.getIntValue("JOB_TYPE") == 10) {
uniqueData = userData;
break;
}
}
}
uniqueDataList.add(uniqueData);
}
```
注意,以上代码仅为示例,具体实现可能需要根据实际情况进行修改。
阅读全文