SpringBoot ObjectMapper 返回json 指定字段排序

当 @JsonPropertyOrder用在类上, @JsonProperty用在字段上时, 
JsonPropertyOrder优先级更高, JsonProperty不会生效
@JsonPropertyOrder({"code", "name"})
class Student{

    @JsonProperty(value = "name", index=10) //index按绝对值从小到大排序
    private String name = "tom";    

    @JsonProperty(value = "code", index=20)
    private String code = "1";

    public static void main(String[] args) throws JsonProcessingException {
        System.out.println(new ObjectMapper().writeValueAsString(new Student()));
    }
}

{"code": "1", "name": "tom"}

=========================

ps: 在用JsonPropertyOrder时, 别写成了  @JsonPropertyOrder({"code, name"})

=========================

属性序列化自定义排序与字母表排序-JSON框架Jackson精解第3篇-腾讯云开发者社区-腾讯云

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 首先需要引入相关依赖: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> ``` 2. 在实体类中定义一个String类型的字段用来接收blob数据,并在该字段上添加@Transient注解,表示该字段不会持久化到数据库中。然后定义一个getter方法,用来将blob数据转换成json格式的字符串返回。 ```java @Entity @Table(name = "user") public class User { @Id private Long id; private String name; @Transient private String data; @Lob private byte[] dataBlob; public String getData() throws IOException { ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(dataBlob, String.class); } // setter和getter方法省略 } ``` 3. 在DAO层中定义一个方法,使用JdbcTemplate查询数据库,并将查询结果转换成实体类对象。在对应的ResultSetExtractor中将blob字段中的数据转换成json格式的字符串并设置到实体类的data字段中。 ```java @Repository public class UserDao { @Autowired private JdbcTemplate jdbcTemplate; public User getUserById(Long id) { String sql = "SELECT * FROM user WHERE id = ?"; return jdbcTemplate.query(sql, new Object[]{id}, new ResultSetExtractor<User>() { @Override public User extractData(ResultSet rs) throws SQLException, DataAccessException { if (rs.next()) { User user = new User(); user.setId(rs.getLong("id")); user.setName(rs.getString("name")); user.setDataBlob(rs.getBytes("data")); try { user.setData(user.getData()); } catch (IOException e) { e.printStackTrace(); } return user; } return null; } }); } } ``` 4. 在Controller层中调用DAO层的方法获取实体类对象,并将其转换成json格式的字符串返回。 ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserDao userDao; @GetMapping("/{id}") public String getUserById(@PathVariable Long id) { User user = userDao.getUserById(id); return user.getData(); } } ``` 这样就可以实现查询blob字段并将其转换成json格式的字符串返回了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值