Json实现页面多个对象的保存

原创 2013年12月04日 10:11:48

以前在页面上要保存多个对象时,我一般在页面用js把这些数据组装起来,然后到服务器再自己写方法解析,比如下

面这个页面:

 

<body>
   <form action="userAction.do?method=add" method="post" name="userForm">
   <input type="button" value="添加好友" onclick="addF()" />
   <div id="friend"></div>
   <input type="text" name="name" /><input type="text" name="age" />
   <select name="sex">
      <option value="0">男</option>
      <option value="1">女</option>
   </select><br/>
   <input type="text" name="name" /><input type="text" name="age" />
   <select name="sex">
      <option value="0">男</option>
      <option value="1">女</option>
   </select><br/>
   <input type="text" name="name" /><input type="text" name="age" />
   <select name="sex">
      <option value="0">男</option>
      <option value="1">女</option>
   </select><br/>
   <input type="hidden" name="userObj" id="userObj" value=""/>
   <input type="button" onclick="sub('userForm')" value="提交"/>
   </form>
</body>

 

nage,age,sex对应Person对象的三个属性,也就是要保存三个对象到数据库中。

假设页面上三个对象的属性值分别为"tom" 20 1, "jacky" 21 0, "lily" 22 1.则在js中通过','将这些值分隔,组装的字符串为

("tom",20,1):("jacky",21,0):("lily",22,1)把这个值赋给userObj,并传到服务器上。

在服务器端的解析代码大致为:

 

String str = request.getParameter("userObj");
String[] strArray = str.split(":");
Person person = new Person();
for(String obj : strArray){
     String[] personArray = obj.split(",");
     person.setName(personArray[0]);
     person.setAge(personArray[1]);
     person.setSex(personArray[2]);
     personService.insert(person);
}

 

但这样实现有个漏洞,就是当页面输入框中包含','时,那服务器解析时就不能将正确的值赋给person对象。

这几天研究了下json,就可以避免这个问题。而且js和服务器端代码可以缩减很多。

json java解析有十几种,我用的是json-lib,觉得他功能比较强大,有关它的语法官网上介绍得很详细,

在这就不多说了,可以参考http://json-lib.sourceforge.net/

json数据格式很简单,比如{name:"tom",age:20,sex:1}就表示一个person对象。详细可以参考json官网

http://www.json.org

在js中我把几个preson对象组装成一个数组,并把这个字符串赋给userObj然后提交表单.

 

var objs = [{name:"tom",age:20,sex:1},{name:"jacky",age:21,sex:},{name:"lily",age:22,sex:1}]
document.getElementById("userObj").value = objs;
document.forms["userForm"].submit();

 

在服务器端的解析代码为:

String str = request.getParameter("userObj");
List<Person> persons = new ArrayList<Person>();
if (str != null && !"".equals(str)) 
     list = getList(str,new Person());
for(Person p : list)
     personService.insert(p);
下面是封装的方法
@SuppressWarnings("unchecked")
public <T> List<T> getList(String str,T t){
     JSONArray array = JSONArray.fromObject(str);//将str转换成json对象
     JsonConfig jsonConfig = new JsonConfig();//参数设置
     jsonConfig.setRootClass(t.getClass());//设置array中的对象类型
     List<T> list = (List<T>)JSONArray.toCollection(array, jsonConfig);//将数组转换成T类型的集合
     return list;
}

Json实现页面多个对象的保存 java /.net

html 代码 Html代码   table>   tr class="ct-ruleValue">   td class="T-TdRight">姓名:td>   td...
  • guorun18
  • guorun18
  • 2015年04月14日 10:12
  • 404

JSON 服务器端返回多个JSON对象。(匿名类)

服务器返回一个参数: 浏览器端(XXX.html  XXX.aspx): $.post("XXX.ashx", { "第一个参数": 123,"第二个参数":456 }, function (...
  • houyanhua1
  • houyanhua1
  • 2017年12月29日 19:58
  • 202

JSON对象的两个方法细解

JSON对象1、stringify()原型:JSON.stringify(obj, callback, spaceNumber); 说明:1.1 将**对象**、**数组**转换为JSON字符串;1....
  • qq20004604
  • qq20004604
  • 2016年11月23日 23:04
  • 877

一个JSP页面如何添加多个对象

在一个JSP页面中添加一个对象很容易——页面中的每个控件即代表一个类的属性,然后提交表单,构成一个JAVABEAN对象,然后保存就可以。   这里我介绍一下如何在一个页面中添加多个表单: 1、添加一个...
  • hbiao68
  • hbiao68
  • 2013年12月04日 10:14
  • 1027

关于js向后台传json类型的多个对象 及后台java接收并取出每一个对象中的值

var allTerminal = [];$(function(){ $('.terminalInfoList').each(function(i,n){ ...
  • java_zbq
  • java_zbq
  • 2016年07月11日 17:04
  • 4530

怎样在asp.net mvc中一次http请求返回多个json对象?

废话不说,直接上代码 public ActionResult GetUnreadMailJsonByApp()         {             string userId = Ope...
  • chunfengdeyiding
  • chunfengdeyiding
  • 2017年07月22日 08:42
  • 884

http json 对象集合传递

http json 集合对象
  • tengdazhang770960436
  • tengdazhang770960436
  • 2017年03月28日 11:06
  • 1095

后台将多个java对象转化成json数组传到前端

1.将多个对象保存在数组 public static String toJsonArray(List list){           if(null == list || list....
  • Mouzu
  • Mouzu
  • 2017年07月28日 16:47
  • 496

servlet对象通过json返回到前台页面并展示

1、实体类 [java] view plaincopyprint? import java.util.ArrayList;    public class ObjectTy...
  • zb0567
  • zb0567
  • 2014年03月12日 12:11
  • 3194

ajax接受多个json对象

var paramArray=new Array(); //paramArray.applyId="${commonEntity.applyId}"; $(".credit").each(func...
  • liumingxuxu
  • liumingxuxu
  • 2017年05月18日 16:44
  • 469
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Json实现页面多个对象的保存
举报原因:
原因补充:

(最多只允许输入30个字)