$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if ( !o[ this.name].push) {
o[this.name] = [ o[this.name] ]
}
o[this.name].push(this.value | | '' ); else {
o[this.name] = this.value ''
}
}); 🎜>
일반적인 객체 변환에는 이 기능으로 충분하지만, 객체에 하위 객체가 포함된 경우에는 지원되지 않습니다.
예를 들어 다음과 같은 형식이 있습니다.
코드 복사
서버에 해당하는 도메인 클래스는 다음과 같습니다.
코드 복사
private String name; getCategory() {
return 카테고리;
}
public void setCategory(DummyCategory 카테고리) {
this.category = 카테고리;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name
}
}
public class DummyCategory {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id; >}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name; 🎜>
양식 데이터를 서버측 도메인 클래스와 일치하는 json 문자열로 직렬화하려면 다음 확장자를 사용할 수 있습니다.
복사 code
코드는 다음과 같습니다.
/**@serializedParams는 "prop1=value1&prop2=value2"와 같습니다.
'prop.subprop=value'와 같은 중첩 속성도 지원됩니다 **/
}
var array = attributeName.split(".")
for (var i = 1; i < array. length; i ) {
var tmpArray = Array();
tmpArray.push("obj")
for (var j = 0; j < i; j ) {
tmpArray. push(array[j]);
var evalString = tmpArray.join(".")
// Alert(evalString)
if(!eval(evalString))
eval(evalString "={ };");
}
}
eval("obj." attributeName "='" attributeValue "';")
};
var Properties = serializedParams .split("&");
for (var i = 0; i < Properties.length; i ) {
evalThem(properties[i]); >};
return obj;
}
$.fn.form2json = function(){
var serializedParams = this.serialize()
var obj = paramString2obj(serializedParams); 🎜>return JSON.stringify(obj) ;
}
아마도 다음과 같습니다:
코드 복사
코드는 다음과 같습니다.
var json = $("#testform").form2json()
alert(json);