mysql字段用json格式,mybatis框架,传前端格式转意问题

前言

  • 今天在实现点功能的时候,需要将mysql中的一个字段类型设置为json,使用的框架是ssm,mybatis的逆向工程返回相应的字段的类型是object,通过@responsebody注解传到前端的时候一直有错误。

错误

  • json如下
"shopGoods": {
			"goodsId": 1,
			"goodsName": "衣服1",
			"shopAdminId": 1,
			"goodsType": "衣服",
			"goodsInfo": "我是衣服1",
			"goodsDetail": "[{\"price\": 0, \"stock\": 0, \"property\": \"标配A\", \"goodsPayNum\": 10, \"goodsDetailStatus\": 0}, {\"price\": 10, \"stock\": 10, \"property\": \"标配B\", \"goodsPayNum\": 10, \"goodsDetailStatus\": 0}, {\"price\": 20, \"stock\": 20, \"property\": \"标配C\", \"goodsPayNum\": 10, \"goodsDetailStatus\": 0}, {\"price\": 30, \"stock\": 30, \"property\": \"标配D\", \"goodsPayNum\": 10, \"goodsDetailStatus\": 0}]",
			"createTime": 1543229568000,
			"modifiedTime": 1543233909000,
			"goodsStatus": 1,
			"isDel": 0
		}
  • 一直有一个/在,应该是为了转意。

解决

  • 将对应的get方法改为如下
public Object getGoodsDetail() {
//    	return this.goodsDetail;
    	return JSONArray.fromObject(this.goodsDetail);
    }
  • 正确返回json
"shopGoods": {
			"goodsId": 1,
			"goodsName": "衣服1",
			"shopAdminId": 1,
			"goodsType": "衣服",
			"goodsInfo": "我是衣服1",
			"goodsDetail": [{
					"price": 0,
					"stock": 0,
					"property": "标配A",
					"goodsPayNum": 10,
					"goodsDetailStatus": 0
				},
				{
					"price": 10,
					"stock": 10,
					"property": "标配B",
					"goodsPayNum": 10,
					"goodsDetailStatus": 0
				},
				{
					"price": 20,
					"stock": 20,
					"property": "标配C",
					"goodsPayNum": 10,
					"goodsDetailStatus": 0
				},
				{
					"price": 30,
					"stock": 30,
					"property": "标配D",
					"goodsPayNum": 10,
					"goodsDetailStatus": 0
				}
			],
			"createTime": 1543229568000,
			"modifiedTime": 1543233909000,
			"goodsStatus": 1,
			"isDel": 0
		}

思考

  • 我仔细看了一mybatis通过jdbc获得的字段并不是json类,而是一个object,应该获取到的不过是一个string的字符串而已(至于为什么需要弄一个json格式的字段,应该是传入以及修改的时候都判断是不是json格式的,有一个提醒功能),所以最终返回前端的时候goodsDetail对应的值应该是一个字符串而已,并不是一个json数组,这就造成了转意的时候需要加上/" ,所以解决的方法应该是将获取的object,转成json数组再返回个object(之所以最后还转成object是因为不转会报错,因为逆向工程生成xml已经一一对应,不想再改了)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值