Javascript 对象序列化函数
Javascript object serialization function
我需要一個可以序列化類型為{"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) {
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".constructor === 数组是错误的,因为它被解释为函数而不是数组。这是完整的代码,您可以在其中看到发生的情况。
<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>
我将非常感谢帮助,目前由每个对象内部的 toSerialize 函数创建的序列化对象,但我们希望使用外部标准函数进行。
尝试使用 JSON 3。它是用于window.JSON
的填充库。它公开了JSON.stringify
和JSON.parse
方法。
相关文章:
- 修改序列化表单函数以获取输入ID而不是名称
- 类型错误:序列化表单时,未定义不是函数
- Javascript 中的函数可序列化性
- Angular $resource也序列化函数
- 如何从 .NET 字符串序列化 javascript 函数
- Javascript 对象序列化函数
- 如何在序列化和提交表单之前将值从一个函数传递到另一个函数
- 为什么我的序列化 JSON 在到达 java 脚本函数参数后被取消序列化
- node.js/sqlite-序列化回调以及主要函数
- 使用PhantomJS桥序列化函数
- 序列化表单并向函数发布ajax
- 将函数对象引用作为序列化json传递
- 用于php的Javascript数组序列化函数
- 解析javascript函数中用于序列化的外作用域引用
- 我正在使用jquery序列化函数通过ajax提交表单
- 如何在JavaScript中序列化函数
- 使用序列化函数发送表单的数据
- 序列化函数调用
- 使用c#在json中序列化一个函数作为参数
- jQuery序列化具有多个值的函数