今天遇到一个json中key重复的要去重,值要相加的一个问题,故来记录一下:
Map<String, Integer> map = new HashMap<String, Integer>();
for (Object object : jsonArray) {
JSONObject jsonObject = (JSONObject) object;
String name = (String) jsonObject.get("belongdepname");
Integer num = Integer.valueOf((String) jsonObject.get("tasknum"));
if (map.containsKey(name)) {
int integer = map.get(name);
map.put(name, integer + num);
} else {
map.put(name, num);
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("belongdepname", entry.getKey());
jsonObject.put("tasknum", String.valueOf(entry.getValue()));
jsonArray1.add(jsonObject);
上面的jsonArray为原来重复的json返回,jsonArray1为去重相加后的json返回,希望对大家有所帮助,谢谢。
这里写目录标题集合转json(一下都用 com.alibaba.fastjson包)JSONArray对象循环获取集合某个字段的值,set接收list集合根据字段分组jsonArray分组jsonArray根据字段值相等过滤出来,返回JSONArray集合筛选对象 如果有返回对象,没有返回null parallelStream(多线程,异步任务)
集合转json(一下都用 com.alibaba.fastjson包)
尽量以集合来获取数据方便后续计算
//jfinal 数据库查询
List<User&
原来数据如下:
[{"index_id":"19557485","itemid":"70575","time":"1467619020","value":"1"},
{"index_id":"19557442","itemid":"113795","time":"1467619020","value":"1"},
{"index_id":"19557507","itemid":"114227
// 将相同name的进行分组
for (let i = 0; i < newArr1.length; i++) {//newArr1为原始json数据
// 利用some函数来区分是否相同
!obj.some(item => item.name === newArr1[i].name &&
item.width === newArr1
var s = '{"身高":"175cm","性别":"男","兴趣":"唱歌","兴趣":"棒球","兴趣":"游泳"}'
var kv = {}, m, reg = /"[^"]+":"[^"]+"/gi;
var m = s.match(reg); var o={};
for(var i=0;i<m.length;i++){
kv=m[i].ma
原数据如下:
var data =
[{"companyName": "A","orderAmt": 100,"Qty": 1,"spec": "800*600","svg": ""},
{"companyName": "A","orderAmt": 100,"Qty": 1,"spec": "800*600","svg": ""},...
a.第一步先把JsonArray转成List<Map<String,Object>>
List<Map<String, Object>> listObjectFir = (List<Map<String, Object>>) JSONArray.parse(jsonarray);
b.建立一个新的List<Map<String, Object>>来接收新的值
List<Map&
var arr = [{name: "上海", value: 1},{name: "上海", value: 2},{name: "北京", value: 3},{name: "杭州", value: 2}]
想要得到的json数据
arr = [{name: "上海", value: 3},{name: "北京", value: 3},{name: "杭州", value: 2}]
function trans (arr) {
let obj = {}
let re
字串 :{“scheduler”:[{“type”:“fairScheduler”}],“scheduler”:{“type”:“faier”}}
经转化------> 目标 :{“scheduler”:[{“type”:“fairScheduler”},{“type”:“faier”}]}
普通的jsonObject类,如com.fasterxml.jackson.da...
可以使用Python中的循环和条件语句来实现合并字典并相加相同key的value。具体步骤如下:
1. 定义两个字典dict1和dict2,包含相同和不同的key-value对。
2. 创建一个新的字典result,用于存储合并后的字典。
3. 使用for循环遍历dict1和dict2中的所有key。
4. 使用if条件语句判断当前key是否已经存在于result字典中。
5. 如果key不存在于result字典中,则将当前key和对应的value添加到result字典中。
6. 如果key已经存在于result字典中,则将当前key对应的value与result字典中的value相加,并更新result字典中的value。
7. 最后,输出合并后的字典result。
示例代码如下:
```python
dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'b': 3, 'c': 4, 'd': 5}
result = {}
for key in dict1.keys():
if key not in result:
result[key] = dict1[key]
else:
result[key] += dict1[key]
for key in dict2.keys():
if key not in result:
result[key] = dict2[key]
else:
result[key] += dict2[key]
print(result)
输出结果为:
```python
{'a': 1, 'b': 5, 'c': 7, 'd': 5}
其中,key为'b'和'c'的value相加后分别为5和7。