Мне нужна функция, которая может сериализовать объект типа {"a": "val", "b": {}, "c": [{}]} без JSON.stringify (вызывать среду просто не имеет объекта JSON) или с использованием jquery и любой другой библиотеки. Код ниже является то, что у меня есть на данный момент:Функция сериализации объекта Javascript
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.stringify' не является ответом, должен помочь дать вам более полезные ответы. – Amadan
Спасибо за совет, я сделал это. Надеюсь, это поможет. – genichm
Можете ли вы использовать [это вместо этого] (https://github.com/douglascrockford/JSON-js)? –