JSONObject json = JSONObject.parseObject(jsonStr);
//parse主要解析字符串,当调用tostring或者tojsonstring会出现, 为null的字段不会被 打印出来
1、foreach循环遍历
在对json迭代的时候,增删会报ConcurrentModificationException,改不会,
解决办法:用iterator迭代, iterator.remove(); 用这个方法删除,或者for循环,移除索引,而不是键key也是可以的
jsonObject.entrySet().forEach(item->{
if(item.getValue().equals("")){
//jsonObject.put("aaa","aaa");
//jsonObject.remove(item.getKey());
jsonObject.put(item.getKey(),null);
}
});
Set<Map.Entry<String, Object>> entries = jsonObject.entrySet();
Iterator<Map.Entry<String, Object>> iterator = entries.iterator();
while (iterator.hasNext()){
Map.Entry<String, Object> next = iterator.next();
if(next.getKey().equals("GPS_INSTALLING")){
iterator.remove();
}
}
2、filter过滤
//将key过滤满足条件放入集合
List<String> collect = jsonObject.keySet().stream().filter(e->e.contains("e")).collect(Collectors.toList());
3、map转变key或者value
//将k所有ey改变放入集合
List<String> collect = jsonObject.keySet().stream().map(e->{return e.substring(0,3);}).collect(Collectors.toList());
4、collect收集相关数据
//将所有key放入集合
List<String> collect = jsonObject.keySet().stream().collect(Collectors.toList());
//将key过滤满足条件放入集合
List<String> collect = jsonObject.keySet().stream().filter(e->e.contains("e")).collect(Collectors.toList());
//将k所有ey改变放入集合
List<String> collect = jsonObject.keySet().stream().map(e->{return e.substring(0,3);}).collect(Collectors.toList());
//找第一个找不到抛异常
String collect = jsonObject.keySet().stream().findFirst().orElseThrow(()->new Tango2BaseRuntimeException(""));
//只有所有key都满足才会是 true
boolean collect = jsonObject.keySet().stream().allMatch(e->e.contains(""));
5、reduce减少
List<Integer> ints = Lists.newArrayList(1,25,3,4,5,6,7,8,9,10);
//获得所有数的和+起始值(2)
System.out.println("ints sum is:" + ints.stream().reduce(2, (sum, item) -> sum + item));
//获得所有数的和
System.out.println("ints sum is:" + ints.stream().reduce((sum, item) -> sum + item).get());
//获得数组中值最大的
System.out.println("最大值:" + ints.stream().reduce((sum, item) -> sum>=item?sum:item).get());
//获得集合大小
System.out.println("ints sum is:" + ints.stream().count());
Stream<String> s = Stream.of("test", "t1", "t2", "teeeee", "aaaa", "taaa");
//拼接字符串 结果:[value]testt1t2teeeeeaaaataaa
System.out.println(s.reduce("[value]",(a,b)->a.concat(b)));