Javascript对象序列化函数
我需要一个函数,它可以序列化类型为{“a”:“val”,“b”:{},“c”:[{}]}的对象,而不使用JSON.stringify(因为环境中根本没有JSON对象),或者使用jquery和任何其他库。下面的代码就是我现在所拥有的:Javascript对象序列化函数,javascript,json,Javascript,Json,我需要一个函数,它可以序列化类型为{“a”:“val”,“b”:{},“c”:[{}]}的对象,而不使用JSON.stringify(因为环境中根本没有JSON对象),或者使用jquery和任何其他库。下面的代码就是我现在所拥有的: function objToString(obj) { if (obj == null) return null; var index = 0; var str = '{'; for (var p in obj) {
function objToString(obj) {
if (obj == null) return null;
var index = 0;
var str = '{';
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
str += index != 0 ? "," : "";
str += '"' + p + '":' + (typeof (obj[p]) == 'object' ? objToString(obj[p]) : itemToJsonItem(obj[p]));
index++;
}
}
str += "}";
return str;
}
function itemToJsonItem(item) {
return isNaN(item) ? '"' + item + '"' : item;
}
此函数可以处理对象、嵌套对象,但不能处理数组。上述对象中的节点“c”看起来像“c”:{“0”:{…}},而不像数组。不足为奇的是“c”。构造函数===数组为false,因为它被解释为函数而不是数组。这是完整的代码,您可以在其中看到发生了什么
<div id="div_result"></div>
<script>
var test = { "a": "val", "b": [{"c":"val c"}]};
function objToString(obj) {
if (obj == null) return null;
var index = 0;
var str = '{';
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
str += index != 0 ? "," : "";
str += '"' + p + '":' + (typeof (obj[p]) == 'object' ? objToString(obj[p]) : itemToJsonItem(obj[p]));
index++;
}
}
str += "}";
return str;
}
function itemToJsonItem(item) {
return isNaN(item) ? '"' + item + '"' : item;
}
document.getElementById("div_result").innerHTML = objToString(test);
</script>
var测试={“a”:“val”,“b”:[{“c”:“val c”}]};
功能对象化(obj){
if(obj==null)返回null;
var指数=0;
var str='{';
用于(obj中的var p){
if(对象hasOwnProperty(p)){
str+=索引!=0?,“:”;
str+='“'+p+'”:'+(typeof(obj[p])=='object'?objToString(obj[p]):itemToJsonItem(obj[p]);
索引++;
}
}
str+=“}”;
返回str;
}
函数itemToJsonItem(item){
返回isNaN(项目)?“+”项目+“:项目;
}
document.getElementById(“div_结果”).innerHTML=objToString(测试);
我将非常感谢您的帮助,目前由每个对象内部的toSerialize函数创建的序列化对象,但我们希望使用外部的标准函数。尝试使用。它是
window.JSON
的polyfill库。它公开了JSON.stringify
和JSON.parse
方法。尝试使用。它是window.JSON
的polyfill库。它公开了JSON.stringify
和JSON.parse
方法。尝试使用。它是window.JSON
的polyfill库。它公开了JSON.stringify
和JSON.parse
方法。尝试使用。它是window.JSON
的polyfill库。它公开了JSON.stringify
和JSON.parse
方法。添加一些理由说明为什么JSON.stringify
不是一个答案,这将有助于提供更多有用的答案。感谢您的建议,我做到了。希望能有帮助。你能使用吗?如果你能注入你自己的代码,你可以注入Crockford的JSON2。重新发明轮子很少有用。你可以得到一个JSON对象的多边形填充添加一些理由说明为什么JSON。stringify
不是一个答案,应该可以帮助你得到更多有用的答案。谢谢你的建议,我做到了。希望能有帮助。你能使用吗?如果你能注入你自己的代码,你可以注入Crockford的JSON2。重新发明轮子很少有用。你可以得到一个JSON对象的多边形填充添加一些理由说明为什么JSON。stringify
不是一个答案,应该可以帮助你得到更多有用的答案。谢谢你的建议,我做到了。希望能有帮助。你能使用吗?如果你能注入你自己的代码,你可以注入Crockford的JSON2。重新发明轮子很少有用。你可以得到一个JSON对象的多边形填充添加一些理由说明为什么JSON。stringify
不是一个答案,应该可以帮助你得到更多有用的答案。谢谢你的建议,我做到了。希望能有帮助。你能使用吗?如果你能注入你自己的代码,你可以注入Crockford的JSON2。重新设计轮子很少有用。您可以为JSON对象获得一个多边形填充