java JSON List<bean> 转换成List<Map>

List<bean> 转换成List<Map>

目录

List 转换成List

1,将list实体类转换成list map

数据准备:

测试:

2,将listmap转换成list实体类

数据准备:

测试:

总结


 

在写代码的时候,遇到了要将List<实体类>改成List<Map>的情况,要怎么做呢?

这边主要用fastjson里面的JSON的内容,来进行转换

1,将list实体类转换成list map

方法

JSON.parseObject(JSONObject.toJSONString(map),T.class);

 

数据准备:

Shape

public class Shape implements Cloneable {
    private String color;
    private String type;
    public Shape(String color, String type) {
        this.color = color;
        this.type = type;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Override
    public Object clone() {
        Object clone = null;
        try {
            clone = super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return clone;
    }
    @Override
    public String toString() {
        return "Shape{" +
                "color='" + color + '\'' +
                ", type='" + type + '\'' +
                '}';
    }
}

 

ShapeFactory

public class ShapeFactory {
    private static final String COLORS[] =
            { "红色", "粉红色", "绿色", "蓝色", "棕色", "橘色" };
    private static final String SHAPES[] =
            { "圆形", "三角形", "长方形", "平行四边形", "扇形", "梯形" };
    public static List<Shape> create(int size) {
        List<Shape> shapeList = new ArrayList<>();
        // 先造一个原型
        Shape prototypeShape = new Shape(getRandomColor(), getRandomShape());
        for(int i=0; i < size; ++i) {
            Shape clone = (Shape) prototypeShape.clone();//复制原型
            clone.setColor(getRandomColor());
            clone.setType(getRandomShape());
            shapeList.add(clone);
        }
        return shapeList;
    }
    private static String getRandomColor() {
        return COLORS[(int)(Math.random()*COLORS.length)];
    }
    private static String getRandomShape() {
        return SHAPES[(int)(Math.random()*COLORS.length)];
    }
}

    使用原型模式的方式,动态生成一些测试数据

测试:

public static void main(String[] args) {
    changeBeanToListMap();
}

// 将list实体类转换成list map
public static void changeBeanToListMap() {
    List<Map> mapList=new ArrayList<>();
    List<Shape> shapeList = ShapeFactory.create(10);
    System.out.println(shapeList.toString());
    System.out.println("========== change to Map ============");
    for(Object shape: shapeList){
        Map map = JSON.parseObject(JSONObject.toJSONString(shape), Map.class);
        mapList.add(map);
    }
    System.out.println(mapList.toString());
}

 

结果:

[Shape{color='绿色', type='圆形'}, Shape{color='粉红色', type='三角形'}, Shape{color='蓝色', type='梯形'}, Shape{color='红色', type='扇形'}, Shape{color='粉红色', type='三角形'}, Shape{color='红色', type='圆形'}, Shape{color='绿色', type='平行四边形'}, Shape{color='红色', type='梯形'}, Shape{color='粉红色', type='扇形'}, Shape{color='蓝色', type='圆形'}]

========== change to Map ============

[{color=绿色, type=圆形}, {color=粉红色, type=三角形}, {color=蓝色, type=梯形}, {color=红色, type=扇形}, {color=粉红色, type=三角形}, {color=红色, type=圆形}, {color=绿色, type=平行四边形}, {color=红色, type=梯形}, {color=粉红色, type=扇形}, {color=蓝色, type=圆形}]

 

2,将listmap转换成list实体类

方法

JSON.parseObject(JSONObject.toJSONString(shape), Map.class);

 

数据准备:

Shape 代码同上

 

ShapeListMapFactory

public class ShapeListMapFactory {
    private static final String COLORS[] =
            { "红色", "粉红色", "绿色", "蓝色", "棕色", "橘色" };
    private static final String SHAPES[] =
            { "圆形", "三角形", "长方形", "平行四边形", "扇形", "梯形" };
    public static List<Map<String,Object>> create(int size) {
        List<Map<String,Object>> shapeList = new ArrayList<>();
        for(int i=0; i < size; ++i) {
            Map<String,Object> single = new HashMap<>();
            single.put("color", getRandomColor());
            single.put("type", getRandomShape());
            shapeList.add(single);
        }
        return shapeList;
    }
    private static String getRandomColor() {
        return COLORS[(int)(Math.random()*COLORS.length)];
    }
    private static String getRandomShape() {
        return SHAPES[(int)(Math.random()*COLORS.length)];
    }
}

 

测试:

public static void main(String[] args) {
    changeListMapToBean();
}

// 将listmap转换成list实体类
public static void changeListMapToBean() {
    List<Shape> shapeList=new ArrayList<>();
    List<Map<String, Object>> dataList = ShapeListMapFactory.create(10);
    System.out.println(dataList.toString());
    System.out.println("========== change to Bean ============");
    Shape single;
    for(Object map: dataList){
        single= JSON.parseObject(JSONObject.toJSONString(map),Shape.class);
        shapeList.add(single);
    }
    System.out.println(shapeList.toString());
}

 

结果:

[{color=绿色, type=梯形}, {color=蓝色, type=扇形}, {color=橘色, type=长方形}, {color=棕色, type=平行四边形}, {color=蓝色, type=平行四边形}, {color=蓝色, type=圆形}, {color=蓝色, type=平行四边形}, {color=红色, type=梯形}, {color=绿色, type=平行四边形}, {color=棕色, type=长方形}]

========== change to Bean ============

[Shape{color='绿色', type='梯形'}, Shape{color='蓝色', type='扇形'}, Shape{color='橘色', type='长方形'}, Shape{color='棕色', type='平行四边形'}, Shape{color='蓝色', type='平行四边形'}, Shape{color='蓝色', type='圆形'}, Shape{color='蓝色', type='平行四边形'}, Shape{color='红色', type='梯形'}, Shape{color='绿色', type='平行四边形'}, Shape{color='棕色', type='长方形'}]

 

总结

   这边主要是使用fastjson里面的JSON来进行数据之间的转换,处理起来也比较简单,但是使用fastjson会存在一个问题,经常出现一些漏洞。如果项目里面没有fastjson,就得另寻它法了,需要使用BeanMap转为为Map的方式

   两者的性能如何呢?

  

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天狼1222

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值