美文网首页
Java解决实体类转为JSON后,顺序不一致问题,JSONObj

Java解决实体类转为JSON后,顺序不一致问题,JSONObj

作者: 唏嘘的码农 | 来源:发表于2024-04-01 21:19 被阅读0次

可以发现,在经过 JSONObject.toJSONString操作时,导致原来的顺序乱了!

原因:JSONObject把实体类转换为map时,不能保证原来的顺序,主要是JSONObject.toJSONString导致的

解决方案:

不要使用JSONObject.去转换JSON字符串,这个工具类不能保证转换后的顺序,网上有很多JSON转换的工具类。

这里我采用原始的转换方法,如下:

import java.util.LinkedHashMap;

import java.util.Map;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.alibaba.fastjson.JSONObject;

public class Test{

    public static void main(String[] args) {

        User user = new User("张三","勤奋的人",28);

        //查看未转换前的user顺序

        System.out.println(user); //结果为:User(name=张三, remark=勤奋的人, age=28)

        //使用ObjectMapper转换为JSON 【这里会抛异常】

        String json = new ObjectMapper().writeValueAsString(user);

        //转换后的user顺序

        System.out.println(json); //结果为:{"name":"张三","remark":"勤奋的人","age":28}

        //把实体类user转换为map,依旧采用JSONObject即可  LinkedHashMap是为了保证转换的顺序

        Map map = JSONObject.parseObject(json, LinkedHashMap.class);

        System.out.println(map); //结果为:{name=张三, remark=勤奋的人, age=28}

    }

}

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_42675423/article/details/126362449

如何利用jackson,把对象中值为null或“”(空字符串)的属性不输出出来

from:

http://www.cnblogs.com/yangy608/p/3936848.html

1.实体上

@JsonInclude(Include.NON_NULL) 

//将该标记放在属性上,如果该属性为NULL则不参与序列化

//如果放在类上边,那对这个类的全部属性起作用

//Include.Include.ALWAYS 默认

//Include.NON_DEFAULT 属性为默认值不序列化

//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化

//Include.NON_NULL 属性为NULL 不序列化

2.代码上

ObjectMapper mapper = new ObjectMapper();

mapper.setSerializationInclusion(Include.NON_NULL);  

//通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化

//Include.Include.ALWAYS 默认

//Include.NON_DEFAULT 属性为默认值不序列化

//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化

//Include.NON_NULL 属性为NULL 不序列化

User user = new User(1,"",null);

String outJson = mapper.writeValueAsString(user);

System.out.println(outJson);

注意:只对VO起作用,Map List不起作用


@Data

@JsonInclude(JsonInclude.Include.NON_NULL)

public class CellVo {

@ExcelProperty(index =0)

private String value1;

@ExcelProperty(index =1)

private String value2;

}

String json =new ObjectMapper().writeValueAsString(excelData);

System.out.println(json);

相关文章

网友评论

      本文标题:Java解决实体类转为JSON后,顺序不一致问题,JSONObj

      本文链接:https://www.haomeiwen.com/subject/uciitjtx.html