`

永远不要自己拼装json

阅读更多

今天项目出现一个非常怪的现象,使用spring拦截的异常有时候显示不出来的问题,现在将原因和解决方案记录下,spring的拦截代码如下:

if(accept.indexOf("application/json")>-1){
			return super.getModelAndView("errors/ajax/500", ex, request);
		}


500页面的代码如下:

<%@ page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>{"errorCode":-1,"errorMsg":"${exception.message}"}


返回的错误信息如下:

{"errorCode":"-1","errorMsg":"错误代码:-20002
错误信息:ORA-20002: 3103: 项目 CUXECSWF/10888CUXECSWF120518150833 的属性 WF_NOTE 不存在。"}


放眼望去好像没有什么问题,然后就是不调用ajax的回调函数,最后没有办法,在后端生成了下json,然后打印出来,发现了问题,后端生成json的代码如下:

Map<String,String> errors = new HashMap<String,String>();
			errors.put("errorCode", "-1");
			errors.put("errorMsg", ex.getMessage());
			log.info(JSONObject.fromObject(errors).toString())


然后用这个生成的json是下面的代码:

{"errorCode":"-1","errorMsg":"错误代码:-20002\r
错误信息:ORA-20002: 3103: 项目 CUXECSWF/10888CUXECSWF120518150833 的属性 WF_NOTE 不存在。"}


所以之前在前端用jsp拼装的json是有问题的,最后将代码修改了下,在后端生存json后传递到前端,代码如下:

Map<String,String> errors = new HashMap<String,String>();
			errors.put("errorCode", "-1");
			errors.put("errorMsg", ex.getMessage());
			
			request.setAttribute("errorJson", JSONObject.fromObject(errors).toString());
			return super.getModelAndView("errors/ajax/500", ex, request);

<%@ page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>${errorJson}


这样就解决了这个问题,随着json的越来越普遍,虽然格式很简单,但是自己拼装的在不经意间就有问题。
0
1
分享到:
评论

相关推荐

    Java基本数据转换成Json代码

    通过运行这个程序,你可以更直观地理解这些转换方法,并将其应用到自己的项目中。在进行实际开发时,还需要注意错误处理,例如检查输入是否有效,以及在转换过程中可能出现的异常。 总之,理解和掌握Java中的JSON...

    echarts 全国以及各省市的地图数据js与json合并版下载

    在本压缩包文件中,包含的是ECharts3中关于全国及各省市地图数据的JS与JSON格式的资源,这些资源对于在ECharts中绘制中国地图及其下属行政区划非常有用。 首先,我们要理解JS(JavaScript)和JSON(JavaScript ...

    Java数据格式转换成json

    ### Java 数据格式转换成 JSON 的全面解析 #### 一、JSON 概述 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,最初由 Douglas Crockford 提出。它基于 JavaScript 的语法,但独立于任何编程语言...

    json-template:一个json编辑器

    JSON TEMPLATE 可视化配置工具 为什么做JSON TEMPLATE 前端组件越来越多,组件的配置一般都是JSON格式的。有些面向用户展示的组件,很多时候...编写组件demo配置页面,让用户自己动手修改组件的展示。 可以做到前后端

    python 操作json文件

    解读字符串拼装成json写入文件,方便其他语言解析数据

    解决javascript组装json的繁琐问题

    本篇文章将探讨如何解决这个问题,通过使用内部的javabean模式和JavaScript的原型链特性来简化JSON数据的拼装。 首先,理解JavaScript中的javabean模式。在Java中,javabean是一种具有getter和setter方法的对象,...

    Java使用JSONObject操作json实例解析

    在Java编程中,JSON(JavaScript Object Notation)已经成为一种广泛使用的数据交换格式,因其轻量级、易读易写的特点而备受青睐。JSON基于两种基本结构:键值对(name/value pairs)和有序的数组(arrays)。在Java...

    易语言SQL拼装1.1 链式编程, 拼装SQL方法

    于是决定用易语言模仿一个, 这个版本只支持 "生成拼装SQL", 下次准备结合ad0o对象. 允许直接操作数据库。制作这么一个东西的初衷是为了 "更快更高效的开发程序", 我们往往在SQL上耽搁了太多时间. 并不是它难. 而是...

    TBM后配套管片拼装机建模及分析

    TBM后配套管片拼装机是一种用于隧道掘进机械(Tunnel Boring Machine, TBM)的配套设备,它主要用于隧道施工中管片的自动拼装。管片是隧道衬砌的重要组成部分,拼装机能够将预制的管片按照设计要求拼装成环状,以...

    小颗粒积木拼装积木图纸免费电子说明书7款

    - 通过电子说明书,用户不仅可以按照指示拼装,还可以尝试自己的创意,改变模型或设计全新的积木结构。 - 与全球的积木爱好者交流,分享经验和成果,提升拼装技巧和创新能力。 总的来说,“小颗粒积木拼装积木...

    SQL语句拼装工具V2

    写java程序时用来拼装sql语句时使用的小工具,在.net 4.0环境下运行。 跟前一版本比较,增加了前缀和空格位置的自定义,并增加了一个配置文件,保存自定义项 例如将 select a, b, c from abc where a like('3') ...

    钢网架结构拼装工程交底记录.doc

    钢网架结构拼装工程交底记录.doc

    11款乌式木质机械传动模型(可动拼装玩具)图纸 平面激光雕刻格式

    标题中的“11款乌式木质机械传动模型(可动拼装玩具)图纸”涉及到的知识点包括: 1. 机械传动模型:这是关于机械工程领域的一种教育或娱乐工具,通过模拟真实的机械结构,帮助人们理解机械设备的工作原理。这些模型...

    Solidworks优化液压支架焊接拼装工艺

    在制作焊接工艺的过程中,利用Solidworks的三维建模功能,模拟复杂大型焊件的拼装过程。进而检测拼装过程中存在的问题:各个零件的焊缝是否干涉、焊缝的焊接位置、焊接的难易程度,最后合理地安排焊接顺序、焊接位置,...

    基于PLC的盾构拼装机举升油缸同步控制.pdf

    而盾构拼装机作为盾构机的主要组成部分,负责隧道的衬砌作业,包括管片的拼装和提升等关键动作。 在盾构拼装机的众多功能中,举升油缸的同步控制是实现管片精确拼装的关键技术之一。传统的拼装机举升操作多依赖于...

    钢结构预拼装.rar

    钢结构预拼装是建筑工程中一个重要的工艺流程,特别是在大型工业建筑、桥梁、体育馆等钢结构工程中,预拼装是确保整体工程质量的关键步骤。这个过程涉及到的设计、施工、检验等多个环节,对于提高工程效率和保障安全...

    钢网架结构拼装.doc

    钢网架结构拼装 钢网架结构拼装是指对钢网架结构的组装和连接,包括钢网架螺栓球节点、焊接球节点、焊接钢板节点等。这里我们将对钢网架结构拼装的相关知识点进行详细的介绍。 2.1 材料要求 钢网架结构拼装中使用...

    叠合节点贝壳形单层穹顶网壳高空拼装法施工方案.doc

    《叠合节点贝壳形单层穹顶网壳高空拼装法施工方案》是关于青岛市展览中心展览馆多功能厅屋盖建设的一项创新性施工方法。该工程采用了少见的叠合节点贝壳形单层穹顶网壳钢结构体系,设计上富有挑战性,通过高空拼装的...

    钢构件预拼装工程检验批质量验收记录.doc

    钢构件预拼装工程检验批质量验收记录.doc

Global site tag (gtag.js) - Google Analytics