前后台JSON传值得一个问题和异常处理net.sf.json.JSONException: Unquotted string '"name"'
项目中做导入的时候遇到个bug,用JSON.stringify()序列号json对象传给后台;然后后台通过getPatameter()获取值时,前台的英文引号变成了中文引号。
原来代码如下:(自己排查发现就算是英文的时候也是如此)
//提交事件
$("#submitButton").bind("click",function(){
if($("#addForm").valid()){
var jsonStr = {};
$("#itemTable").find("input[lang='userAdd']").each(function(index,obj){
var nameAttr = $(obj).attr("id").trim();
var valueAttr = $('#'+nameAttr).combobox('getValue').trim();
if (valueAttr != "" && valueAttr != undefined) {
jsonStr[valueAttr] = nameAttr;
}
});
var json = new Object();
json.name = "ss";
json.age = "";
var data = JSON.stringify(json);
var att = {};
att["password"] = $("#text_pwd").val();
att["organization"] = $("#text_organization").combotree("getValue"); $(this).attr("disabled","disabled");
Loading(true,"<s:text name='cems.soft.progress.handling'></s:text>");//遮罩提示
$.doAjax({
url:'${basePath}/user/userAction_userAdd.do',
data:{"data":data,"arrdata":JSON.stringify(att)},
async:true,
success:function(responseText){
在后台获取时,前台的英文引号,在后台变成了中文引号,导致JSON解析出错,报异常:net.sf.json.JSONException: Unquotted string '”ss”'
/**
* 映射字段
*/
public void userAdd(){
log.info("用户批量导入_PBEG");
this.msg=RESULT_FAIL;
long startTime = System.currentTimeMillis();//获取当前时间
String initPassword = "";
File file = null;
List<User> list = new ArrayList<User>();
List<UserCache> userCaches = new ArrayList<UserCache>();
List<String> failedFailName = new ArrayList<String>();
Organization default_org = null;
try {
String data = getRequest().getParameter("data");
String arrdata =getRequest().getParameter("arrdata");
JSONObject jsonData = JSONObject.fromObject(data);
JSONObject jsonArrdata = JSONObject.fromObject(arrdata);
String arrPassword = jsonArrdata.containsKey("password") ? jsonArrdata.getString("password") : "";
String arrOrganization = jsonArrdata.containsKey("organization") ? jsonArrdata.getString("organization") : "";

解决方案:
经过几次json转换的尝试,发现结果均是如此,所以最后决定采用注入的方式处理。
//提交事件
$("#submitButton").bind("click",function(){
if($("#addForm").valid()){
var jsonStr = {};
$("#itemTable").find("input[lang='userAdd']").each(function(index,obj){
var nameAttr = $(obj).attr("id").trim();
var valueAttr = $('#'+nameAttr).combobox('getValue').trim();
if (valueAttr != "" && valueAttr != undefined) {
jsonStr[valueAttr] = nameAttr;
}
});
var data = JSON.stringify(jsonStr);
var att = {};
att["password"] = $("#text_pwd").val();
att["organization"] = $("#text_organization").combotree("getValue"); $(this).attr("disabled","disabled");
Loading(true,"<s:text name='cems.soft.progress.handling'></s:text>");//遮罩提示
$.doAjax({
url:'${basePath}/user/userAction_userAdd.do',
data:{"data":data,"arrdata":JSON.stringify(att)},
async:true,
success:function(responseText){
后台:采用注入方式
private String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
} private String arrdata;
public String getArrdata() {
return arrdata;
}
public void setArrdata(String arrdata) {
this.arrdata = arrdata;
}
/**
* 映射字段
*/
public void userAdd(){
log.info("用户批量导入_PBEG");
this.msg=RESULT_FAIL;
long startTime = System.currentTimeMillis();//获取当前时间
String initPassword = "";
File file = null;
List<User> list = new ArrayList<User>();
List<UserCache> userCaches = new ArrayList<UserCache>();
List<String> failedFailName = new ArrayList<String>();
Organization default_org = null;
try {
//String data = getRequest().getParameter("data");
//String arrdata =getRequest().getParameter("arrdata");
JSONObject jsonData = JSONObject.fromObject(data);
JSONObject jsonArrdata = JSONObject.fromObject(arrdata);
String arrPassword = jsonArrdata.containsKey("password") ? jsonArrdata.getString("password") : "";
String arrOrganization = jsonArrdata.containsKey("organization") ? jsonArrdata.getString("organization") : ""; String excelPath = getServletContext().getRealPath(USEREXCELTEMPLATE_DOWNLOADPATH+USEREXCELTEMPLATE_FILE);
file = new File(excelPath);
if(!file.exists() && !file.isDirectory()){
this.msg = "readErr";
throw new IllegalStateException("用户批量导入-->用户导入临时文件不存在!");
}
List<UserExport> userExports = new ArrayList<UserExport>();

前后台JSON传值得一个问题和异常处理net.sf.json.JSONException: Unquotted string '"name"'的更多相关文章
- net.sf.json.JSONException: java.lang.NoSuchMethodException
在尝试将json对象转换为list时候出现了如下错误 Exception in thread "main" net.sf.json.JSONException: java.lang ...
- net.sf.json.JSONException: There is a cycle in the hierarchy!
因为项目中使用了AJAX技术,jar包为:json-lib.jar,在开发过程中遇到了一个JSON-LIB和Hibernate有关的问题: 如hibernate延迟加载错误,这都是些老问题了,一看就知 ...
- Java中net.sf.json包关于JSON与对象互转的问题
在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...
- Java中net.sf.json包关于JSON与对象互转的坑
在Web开发过程中离不开数据的交互,这就需要规定交互数据的相关格式,以便数据在客户端与服务器之间进行传递.数据的格式通常有2种:1.xml:2.JSON.通常来说都是使用JSON来传递数据.本文正是介 ...
- net.sf.json.JSONOBJECT.fromObject 与 com.alibaba.fastjson.JSONObject.parseObject
文章待补充,先写写以下知识点好了. NULL值处理之 net.sf.json.JSONObject 和 com.alibaba.fastjson.JSONObject区别 JSON作为一个轻量级的文本 ...
- net.sf.json和 com.fasterxml.jackson中对象转json的区别
近期做项目的时候,发现使用net.sf.json包中的JSONObject或JSONArray将对象转为json数据结构存在一个坑.当对String类型的属性赋值为null情况下,转为json结构为& ...
- net.sf.json JSONObject与JSONArray总结
JSONObject:json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value} JSONArray:json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式 ...
- net.sf.json.JSONObject 和org.json.JSONObject 的差别
http://my.oschina.net/wangwu91/blog/340721 net.sf.json.JSONObject 和org.json.JSONObject 的差别. 一.创建jso ...
- json解析异常 - net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
注:在项目中, 我使用原生的ajax请求数据的时候, JSONObject没能帮我解析, 当却不给我报错, 我是在junit单元测试中测试的时候, 发现的.发现好多时候, 特别是通过ajax请求, 不 ...
随机推荐
- 【bzoj4870】[Shoi2017]组合数问题 dp+快速幂/矩阵乘法
题目描述 输入 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 输出 一行一个整数 ...
- struts2的ajax支持
struts2支持一种stream类型的Result,这种类型的Result可以直接向客户端浏览器响应二进制,文本等, 我们可以再action里面生成文本响应,然后在客户端页面动态加载该响应即可. 直 ...
- [ CodeVS冲杯之路 ] P1010
不充钱,你怎么AC? 题目:http://codevs.cn/problem/1010/ 首先我们将坐标都+1,因为它是从(0,0)开始的 预处理出禁区,也就是马能到达的格子和马自己的格子,标上记号 ...
- 【IDEA】IDEA下maven项目无法提示和使用EL表达式的解决办法
今天在IDEA创建web项目之后发现无法使用EL和JSTL, 一.如果JSP中无法自动提示EL表达式,比如${pageContext.request.contextPath},可在pom.xml的&l ...
- Appium+python自动化3-启动淘宝app【转载】
前言 前面两篇环境已经搭建好了,接下来就是需要启动APP,如何启动app呢?首先要获取包名,然后获取launcherActivity.获取这两个关键东西的方法很多,这里就不一一多说,小伙伴们可以各显神 ...
- Jquery操作基本筛选过滤器
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【原创】Win Server 2012R2 IIS 详细配置(多图详解)
1. 前期准备 1) 2012系统的IIS安装的时候,需要系统安装盘里面的一些软件,因此需要在安装前将系统安装盘挂载到服务器的盘符上,以便使用. 2. 添加角色和功能 打开服务器管理器,点击管理菜单, ...
- 可视化web日志分析工具Logstalgia
https://blog.csdn.net/zrools/article/details/47250661
- CF988 C. Equal Sums【map+pair/hash/任选两个序列,两个序列都除去他们中的一个数,使的总和相同】
[链接]:CF988C [题意]:在n个序列中任选两个序列,两个序列都除去他们中的一个数,使的总和相同 [分析]:map<int,pair<int,int> > mp,从0~m ...
- Fiddler在fiddler option设置还是抓不了HTTPS包解决办法
1:请在“运行”,即下面这个地方输入certmgr.msc并回车,打开证书管理. 打开后,请点击操作--查找证书,如下所示: 然后输入“fiddler”查找所有相关证书,如下所示: 可以看到,我们找到 ...