结论:解决VO类属性与要返回的json串字段名称不一样的问题,需要用到@JsonProperty(“xxx”)这个注解

那具体怎么使用呢?下面我拿我个人的例子来说明。

需要返回的json串字段格式如下:

{"code": 0,"msg": "成功","data": [{"name": "热榜","type": 1,"foods": [{"id": "123456","name": "皮蛋粥","price": 1.2,"description": "好吃的皮蛋粥","icon": "http://xxx.com",}]}

但可以明显看到,有两个名称一样的name字段。会让人容易混淆。

所以在VO类,我们具体的来写,如:categoryName,productNam。这样写,就可以达到见名知意的效果。

那么问题来了,你这样写VO类的属性,返回的json串字段,也会是categoryName,productNam。

这样就会与我们想要返回的两个name字段不一致。

那么在不改json串两个name名称的情况下,如何达到categotyName在转json的串的时候是name呢?

这就要用到@JsonProperty("name")

案例解决方法

在VO类的categoryName属性上面加上@JsonProperty("name")注解。

这样做,就会将VO类的categoryName属性在转json串的时候,字段名称不会是CategotyName,而是注解中的name。

这样,会与要求返回的name是一样的了,前端可以接收到相应的数据,而VO类属性,也能达到见名知意效果。

具体代码

ProductInfoVO

/*** Created by 李柏霖* 2020/10/17 21:20*/package com.lbl.VO;import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;import java.math.BigDecimal;@Data
public class ProductInfoVO {@JsonProperty("id")private String productiId;@JsonProperty("name")private String productnName;@JsonProperty("price")private BigDecimal productPrice;@JsonProperty("description")private String productDescription;@JsonProperty("icon")private String productIcon;
}

ProductVO

/*** 商品(包含类目)* Created by 李柏霖* 2020/10/17 21:12*/package com.lbl.VO;import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;import java.util.List;@Data
public class ProductVO {@JsonProperty("name")private String categoryName;@JsonProperty("type")private Integer categoryType;@JsonProperty("foods")private List<ProductInfoVO> productInfoVOList;
}

ResultVO

/*** http请求返回的最外层对象* Created by 李柏霖* 2020/10/17 20:45*/package com.lbl.VO;import lombok.Data;@Data
public class ResultVO<T> {//错误码private Integer code;//提示信息private String msg;//返回的具体内容private T data;
}

BuyerProductController

(这边只是返回json字段名,并没有加真实数据,单纯为了验证json串格式)

/*** 买家商品* Created by 李柏霖* 2020/10/17 20:11*/package com.lbl.controller;import com.lbl.VO.ProductInfoVO;
import com.lbl.VO.ProductVO;
import com.lbl.VO.ResultVO;
import com.lbl.dataObject.ProductCategory;
import com.lbl.dataObject.ProductInfo;
import com.lbl.service.ICategoryService;
import com.lbl.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;@RestController
@RequestMapping("/buyer/product")
public class BuyerProductController {@AutowiredIProductService productService;@AutowiredICategoryService categoryService;@GetMapping("/list")public ResultVO list(){//1.查询所有的上架商品List<ProductInfo> productInfoList = productService.findUpAll();//2.查询类目(一次性查询)List<ProductCategory> categoryList = new ArrayList<>();//3.数据拼装//最外层(1层)ResultVO<Object> resultVO = new ResultVO<>();resultVO.setCode(0);resultVO.setMsg("成功");//类目层(2层)ProductVO productVO = new ProductVO();//商品详情层(3层)List<ProductInfoVO> productInfoVOList=new ArrayList<>();ProductInfoVO productInfoVO = new ProductInfoVO();productInfoVOList.add(productInfoVO);//在1层拼接2层resultVO.setData(productVO);//在类(在2层拼接3层)productVO.setProductInfoVOList(productInfoVOList);return resultVO;}
}

页面效果:

(这边只是返回json字段名,并没有加真实数据,单纯为了验证json串格式)

解决VO类属性与要返回的json串字段名称不一样的问题相关推荐

  1. Mybatis中resultMap的作用-解决实体类属性名和数据库字段不一致

    解决实体类属性名和数据库字段不一致 转载于:https://www.cnblogs.com/mww-NOTCOPY/p/10950712.html

  2. Mybatis解决实体类属性和表字段对应不上

    一.通过XML文件中的resultMap 这种方式是最常见的,类似如下: <mapper namespace="demo.UserDao"><resultMap ...

  3. 如何用java语法解析接口返回的json串?

    起因:做接口测试的时候经常需要对接口返回的响应数据(一般都是json字符串格式)做解析 下面是一个接口响应数据的例子: 下面是对上面接口返回的json格式字符串的解析 Object dataObj=J ...

  4. MyBatis多表查询之XML和注解实现(resultMap结果集映射配置数据库字段与实体类属性一一映射)

    MyBatis多表查询 多表模型分类 一对一:在任意一方建立外键,关联对方的主键. 一对多:在多的一方建立外键,关联一的一方的主键. 多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键. 数 ...

  5. Python 实例属性和类属性

    由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object):def __init__(sel ...

  6. Python基础-不要对实例属性和类属性使用相同的名字

    示例 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # 不要对实例属性和类属性使用相同的名字class Duck(object):name = &quo ...

  7. 接口返回html转换josn,接口返回数据Json格式处理

    有这样一个页面 , 用来显示用户的账户记录数据,并且需要显示每个月的 收入 支出合计 ,在分页的时候涉及到一些问题,需要对返回的Json格式做处理,处理起来比较麻烦,后端返回的Json数据格式形式如下 ...

  8. 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

    [转]MyBatis学习总结(四)--解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体 ...

  9. MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

    2019独角兽企业重金招聘Python工程师标准>>> 一.准备演示需要使用的表和数据 CREATE TABLE orders(order_id INT PRIMARY KEY AU ...

最新文章

  1. android布局优化方案,Android启动优化-布局优化
  2. Android获取顶部状态栏statusBar高度、底部导航栏navigationBar高度
  3. 8.继续分析一破解加密码获取-最最最简单的注册机
  4. 左耳朵耗子论微服务 Serverless 及 FaaS | GIAC 访谈
  5. JavaScript中的Window窗口对象【转载】
  6. 向linux内核加入系统调用新老内核比較
  7. 百度贴吧个人主页_百度手机App商店社交应用排行榜,微信连续三个月霸占榜首...
  8. Nginx Slab内存管理
  9. 利用python批量创建文件夹、批量创建文件、批量复制文件到指定文件夹
  10. 反双曲余弦函数之C#设计笔记(五)
  11. 淘宝API接口(item_history_price-获取商品历史价格信息)
  12. “IP地址/24”是什么意思
  13. 需求分析——需求分析的步骤
  14. redmine邮箱配置
  15. WPF绑定(Binding)绑定对象集合修改显示属性问题
  16. 双系统卸载不干净,导致无法进入系统的引导修复办法(不用pe)
  17. 区块链将会怎样颠覆Google、Amazon、Facebook和Apple?
  18. 杂言乱谈,以后的日志很辉煌?
  19. 计算机考试怎么另存为,Word2007另存为.doc的更快捷方法
  20. 翻译Stairway to SQL Server Security Level 3: Principals and Securables

热门文章

  1. 游戏设计模式-命令模式
  2. python-半省略号、三个点、点点点、...符号的用法小结
  3. Apache Superset 1.2.0教程 (二)——快速入门(可视化王者英雄数据)
  4. 51单片机控制步进电机-电路连接
  5. STM32物联网项目-单极性步进电机28BYJ-48
  6. 银行核心操作系统as400 rs6000
  7. 2019xupt-acm校赛 题解 ( F.猜球球 ) by出题组tongtong
  8. 像个黑客一样在网络上来无影去无踪之IP代理理论篇
  9. Information Gain 计算 python实现
  10. 系统开发建设要经过哪些流程?