当我们返回从数据库拿取JSON的字段时遇见"[\"A\", \"B\", \"C\", \"D\"]"形式时

根本原因是:

字段被当作字符串类型处理,而非 JSON 数组类型当序列化为 JSON 响应时,字符串中的双引号会被自动转义(添加\),最终呈现出带转义符的字符串包裹数组的格式。

==========开始教学==========

解决方法:

一、:将数据库JSON字段映射实体类的对应字段String类型改为Object
二、:操作Impl层对JSON串数据进行处理

        1.对JSON串进行转字符串处理

        2.对字符串进行转JSONArray格式处理

三、:返回结果展示/对比

//处理前

"[\"爱国\", \"创业\", \"求实\", \"奉献\"]"



//处理后

"["爱国", "创业", "求实", "奉献"]"
//修改前实体类定义
private String optionsList

//修改后实体类定义
private Object optionsList

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

//修改前impl层定义
return xxx;

//修改后impl层定义
//1.对拿取到的数据库JSON串进行转字符串
    String oldJsonString = question.getOptionsList().toString();
//2.对处理后的字符串转JSONArray格式   
    JSONArray newJsonArray = JSON.parseArray(oldJsonString);
//重新封装数据
    question.setOptionsList(newJsonArray);


 

希望能对你解决问题有所帮助!

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐