论坛首页 Java企业应用论坛

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

浏览 2222 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-28  

html 代码

<table>
<tr class="ct-ruleValue">
<td class="T-TdRight">姓名:</td>
<td>
<input id="txtName" type="text" size="20" />
</td>
</tr><tr class="ct-ruleValue">
<td class="T-TdRight">证件:</td>
<td>
<input id="txtIdentityID" type="text" size="20" />
</td>
</tr><tr class="ct-ruleValue">
<td class="T-TdRight">性别:</td>
<td>
<select id="txtSex" >
<option value="男">男</option>
 <option value="女">女</option>
 </select>
</td>
</table>
<div class="c-ruleSetBtn">
<input  type="button" value="保存" onclick="add();" />
<input  type="submit" value="保存&amp;提交"
onclick="addExit();" />
						</div>
 

javascript  采用mootools 组合json数据  页面需要引用 mootools.js 1.2

var arr = new Array();
    var str="";
//注意$()  等于是document.getElementById()



 function add() {
            str = { "identityID": $("txtIdentityID").value, "name": $("txtName").value,  "gender": $("txtSex").selectedIndex
            };
            //每点击一次 添加 组合一个放在数组中
            arr.push(str);
        }
    }

    function addExit() {
       //提交代码   把多个组合的json 放在了隐藏域保单的属性中
        if (str != "") {
       //mootools 提供的json转换 方法
      $("txtAllValue").value = JSON.encode(arr);
        }
    }
 

 

后台代码 对象的属性要和json的属性名称相对应

public class BuilderRec implements java.io.Serializable{

	private String name;
	private String identityID;
	private String gender;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getIdentityID() {
		return identityID;
	}
	public void setIdentityID(String identityID) {
		this.identityID = identityID;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	
}
 

 

java 转换 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:

      1.commons-lang.jar

      2.commons-beanutils.jar

      3.commons-collections.jar

      4.commons-logging.jar 

      5.ezmorph.jar

      6.json-lib-2.2.2-jdk15.jar

	List<BuilderRec> builderRecs = new ArrayList<BuilderRec>();
	String str = request.getParameter("txtAllValue");
	if (str != null && !"".equals(str))
	     list = getList(str,new Person());
         //转换成对应的类对象
	for(BuilderRec p : list)
	     builderRecService.insert(p);
	//下面是封装的方法
	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;
	}
 

 

 

.net也差不多

 
System.Runtime.Serialization.Json.DataContractJsonSerializer ser = 
new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(List<BuilderRec>));
                        List<BuilderRec> list = 
(List<BuilderRec>)ser.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(txtAllValue.Value)));
                        foreach (BuilderRec p in list)
                        {
                           可以获取了  p.name;p.identityID; 方式
                        }
 
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics