1.使用选择器等方式收集到标签的值
例如:
function get(){
var jsonStr =[];
$(".input").each(function(index,item){
index++;//循环的索引
var val = $(this).val().trim();//拿到当前循环体的值去空格
if(val!=""){
var obj={}//创建一个JSON格式的空对象
var title = $(this).parent().prev().html();//找个当前元素的父类级的前一个元素值
obj['title'] = title;//JSON中的第一个成员,类似于{title : "title"}
obj['value'] = val;//JSON中的第二个成员,类似于{title:"title" , value : "value"}
//依次往下添加其他成员,这里也可以使用(obj.title=title)这种方式来添加
obj['flags'] = "0";
obj['sort'] = index;
obj['color'] = val;
obj['lastColor'] = val;
//要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法
JSON.stringify(obj)之后为:
{"title" : "title","value " : "value "}
//循环放入jsonStr数组中为:
jsonStr.push(JSON.stringify(obj));
["{"title" : "title","value" : "value"}","{"title" : "title" , "value" : "value"}"]
}
});
//把得到的这个数组赋值给文本保存。
$("#jsonStr").val(jsonStr);
}
2.在JSP页面会有一个对应的隐藏域如下:
<form:hidden path="jsonStr"/>
这个id对应着当前这个实体类里面的一个属性,这样json串就会通过实体传入到后台的逻辑中。
3.后台处理
// 去掉html制表字符,转义字符,并且加上"[“左括号和右括号”]":
String str = CONSTANT.BRACKET_LEFT + StringEscapeUtils.unescapeHtml3(scProductionPackageTitle.getJsonStr())
+ CONSTANT.BRACKET_RIGHT;
转成json数组循环获取:
try {
if (!StringUtils.isRealEmpty(str)) {
JSONArray jsonArray = new JSONArray(str);
// 前台传进来的JSON对象数量
int size = jsonArray.length();
if (size == 0) {
// "没有JSON数据,请联系管理员"
throw new ServiceException(MSG_PARSING_JSON);
}
if (size != 0) {
JSONObject jsonObject = null;
for (int i = 0; i < jsonArray.length(); i++) {
jsonObject = jsonArray.getJSONObject(i);
// 逐个获取并解析数据([{"title":"主板BOM","value":"1"},{"title":"小板BOM","value":"6"}])
String packageDetailsTitle = jsonObject.get(TITLE).toString().trim();
String packageDetailsValue = jsonObject.get(VALUE).toString().trim();
ScProductionPackageDetails scProductionPackageDetails = new ScProductionPackageDetails();
// 保存数据
scProductionPackageDetails.setTechnicalInformation(packageDetailsTitle);
scProductionPackageDetails.setTechnicalDataDescription(packageDetailsValue );
scProductionPackageDetails.setRemark(packageDetailsFlags);
scProductionPackageDetails.setSort(packageDetailsSort);
scProductionPackageDetails.setColor(packageDetailsColor);
scProductionPackageDetails.setLastColor(strLastColor);
scProductionPackageDetailsService.save(scProductionPackageDetails);
}
}
}
} catch (Exception e) {
logger.error("保存资料包明细出错:" + e.getMessage());
throw new ServiceException("保存资料包明细出错:" + e.getMessage());
}