最近有个需求,需要把JSON格式字符串数组对象属性合并追加,需要的格式:
[{name='颜色', value=[白色, 黑色, 黄色]},{name='尺寸', value=[M, L, XL]},{name='布料', value=[纯棉]}]
合并前的json字符串
"[{\"key\":\"颜色\",\"value\":\"白色\"},{\"key\":\"尺寸\",\"value\":\"M\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
"[{\"key\":\"颜色\",\"value\":\"白色\"},{\"key\":\"尺寸\",\"value\":\"L\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
"[{\"key\":\"颜色\",\"value\":\"白色\"},{\"key\":\"尺寸\",\"value\":\"XL\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
"[{\"key\":\"颜色\",\"value\":\"黑色\"},{\"key\":\"尺寸\",\"value\":\"M\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
"[{\"key\":\"颜色\",\"value\":\"黑色\"},{\"key\":\"尺寸\",\"value\":\"L\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
"[{\"key\":\"颜色\",\"value\":\"黑色\"},{\"key\":\"尺寸\",\"value\":\"XL\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
"[{\"key\":\"颜色\",\"value\":\"黄色\"},{\"key\":\"尺寸\",\"value\":\"M\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
"[{\"key\":\"颜色\",\"value\":\"黄色\"},{\"key\":\"尺寸\",\"value\":\"L\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
"[{\"key\":\"颜色\",\"value\":\"黄色\"},{\"key\":\"尺寸\",\"value\":\"XL\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
直接上代码:
public static void main(String[] args) {
String aa = "[{\"key\":\"颜色\",\"value\":\"白色\"},{\"key\":\"尺寸\",\"value\":\"M\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
String bb = "[{\"key\":\"颜色\",\"value\":\"白色\"},{\"key\":\"尺寸\",\"value\":\"L\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
String bbb = "[{\"key\":\"颜色\",\"value\":\"白色\"},{\"key\":\"尺寸\",\"value\":\"XL\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
String cc = "[{\"key\":\"颜色\",\"value\":\"黑色\"},{\"key\":\"尺寸\",\"value\":\"M\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
String dd = "[{\"key\":\"颜色\",\"value\":\"黑色\"},{\"key\":\"尺寸\",\"value\":\"L\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
String ddd = "[{\"key\":\"颜色\",\"value\":\"黑色\"},{\"key\":\"尺寸\",\"value\":\"XL\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
String ee = "[{\"key\":\"颜色\",\"value\":\"黄色\"},{\"key\":\"尺寸\",\"value\":\"M\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
String ff = "[{\"key\":\"颜色\",\"value\":\"黄色\"},{\"key\":\"尺寸\",\"value\":\"L\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
String fff = "[{\"key\":\"颜色\",\"value\":\"黄色\"},{\"key\":\"尺寸\",\"value\":\"XL\"},{\"key\":\"布料\",\"value\":\"纯棉\"}]";
JSONArray array = new JSONArray();
JSONArray arrayA = JSONArray.parseArray(aa);
JSONArray arrayB = JSONArray.parseArray(bb);
JSONArray arrayBB = JSONArray.parseArray(bbb);
JSONArray arrayC = JSONArray.parseArray(cc);
JSONArray arrayD = JSONArray.parseArray(dd);
JSONArray arrayDD = JSONArray.parseArray(ddd);
JSONArray arrayE = JSONArray.parseArray(ee);
JSONArray arrayF = JSONArray.parseArray(ff);
JSONArray arrayFF = JSONArray.parseArray(fff);
//所有的JSON合并到一个数组
array.addAll(arrayA);
array.addAll(arrayB);
array.addAll(arrayBB);
array.addAll(arrayC);
array.addAll(arrayD);
array.addAll(arrayDD);
array.addAll(arrayE);
array.addAll(arrayF);
array.addAll(arrayFF);
List<ProductPmsProductAttributeVo> list=new ArrayList<ProductPmsProductAttributeVo>();
//遍历数组
for (int i = 0; i < array.size(); i++) {
//获取第一个对象的key值
String key=array.getJSONObject(i).getString("key");
//获取第一个对象的value值
String value=array.getJSONObject(i).getString("value");
//遍历已添加的key再比较value
if(list.size()>0){
//记录是否存在相同的key
boolean isExit=false;
//记录存在相同key的value
String exitValue="";
//记录第几个对象的key相同
int obj=0;
//遍历
for (int j = 0; j < list.size(); j++){
String voKey=list.get(j).getName();
if(key.equals(voKey)){
isExit=true;
exitValue=value;
obj=j;
break;
}
}
//存在相同的key值
if(isExit){
List<String> exitVaList=list.get(obj).getValue();
//记录是否存在相同的value
boolean isValueExit=false;
//遍历value值是否存在
for (int k = 0; k < exitVaList.size(); k++){
String exitVa=exitVaList.get(k);
if(exitValue.equals(exitVa)){
isValueExit=true;
break;
}
}
//value没有重复值 直接添加,value存在则不用再做操作
if(!isValueExit){
//
list.get(obj).getValue().add(value);
}
}else{
//不存在相同的key值,直接添加新key
ProductPmsProductAttributeVo vo=new ProductPmsProductAttributeVo();
vo.setName(key);
List<String> vaList=new ArrayList<>();
vaList.add(value);
vo.setValue(vaList);
list.add(vo);
}
}else{
//第一次list会为0 直接添加新key和新value
ProductPmsProductAttributeVo vo=new ProductPmsProductAttributeVo();
vo.setName(key);
List<String> vaList=new ArrayList<>();
vaList.add(value);
vo.setValue(vaList);
list.add(vo);
}
}
System.out.println(list);
}
ProductPmsProductAttributeVo :
public class ProductPmsProductAttributeVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "规格ID")
private Long id;
@ApiModelProperty(value = "规格名称")
private String name;
@ApiModelProperty(value = "规格值")
private List<String> value;
@Override
public String toString() {
return "ProductPmsProductAttributeVo{" +
"name='" + name + '\'' +
", value=" + value +
'}';
}
}
执行结果
![]()
本文介绍了一种将多个JSON格式的字符串数组对象属性进行合并的方法,通过遍历和比较,最终形成一个统一的数据结构,适用于产品属性的批量处理。

1410

被折叠的 条评论
为什么被折叠?



