Я'м stringyfing объект типа {'фу': 'бар'}
Как я могу повернуть строку обратно в объект?
Вам нужно формат JSON.метод Parse()
строку.
в
var str = '{"hello":"world"}';
try {
var obj = JSON.parse(str); // this is how you parse a string into JSON
document.body.innerHTML += obj.hello;
} catch (ex) {
console.error(ex);
}
в
В JSON.разбор
в отличие от в JSON.преобразовать в строки
.
В JSON.преобразовать в строки
и `формат JSON.разобрать практически oposites, и "обычно" эта вещь будет работать:
var obj = ...;
var json = JSON.stringify(obj);
var obj2 = JSON.parse(json);
так что obj и на " obj2;то же, что".
Однако существуют некоторые ограничения, которые надо знать. Часто эти вопросы не имеет значения, как вы'ре дело с простыми объектами. Но я'МР иллюстрируют некоторые из них, используя эту вспомогательную функцию:
function jsonrepack( obj ) { return JSON.parse(JSON.stringify(obj) ); }
функции var MyClass в = () { это.ФОО=на"фу", у; } Класса MyClass.прототип = { бар:"в баре" }
ВАР о = новый класс MyClass(); ВАР ОО = jsonrepack(о); консоль.журнал(ОО.бар); // неопределено консоль.журнал( ОО экземпляром класса MyClass ); // ложь
ВАР о = {}; ВАР ОО = jsonrepack(о); консоль.отчет( о = о== оо ); // ложь
jsonrepack( { Ф:функция(){} } ); // вернет {}
jsonrepack(новая дата(1990,2,1)); // возвращает '1990-02-01T16:00:00.000 з'
ВАР в = { Х:неопределено } консоль.журнал (на"Х" В В); // верно консоль.журнал (на"Х" в jsonrepack(в)); // ложь
Х = { ф: на"фу" и, метод toJSON:функция(){ возвращение "Ну надо же", у; } } jsonrepack(х) // возвращает 'ей-богу'
Я'м точно есть проблемы с другими встроенными типами тоже. (Все это было проверено с помощью node.js так что вы можете получить различное поведение тоже в зависимости от среды).
Когда это важно, иногда можно преодолеть с помощью дополнительных параметров формат JSON.разобрать
и формат JSON.преобразовать в строки
. Например:
function MyClass (v) {
this.date = new Date(v.year,1,1);
this.name = "an object";
};
MyClass.prototype.dance = function() {console.log("I'm dancing"); }
var o = new MyClass({year:2010});
var s = JSON.stringify(o);
// Smart unpack function
var o2 = JSON.parse( s, function(k,v){
if(k==="") {
var rv = new MyClass(1990,0,0);
rv.date = v.date;
rv.name = v.name;
return rv
} else if(k==="date") {
return new Date( Date.parse(v) );
} else { return v; } } );
console.log(o); // { date: <Mon Feb 01 2010 ...>, name: 'an object' }
console.log(o.constructor); // [Function: MyClass]
o.dance(); // I'm dancing
console.log(o2); // { date: <Mon Feb 01 2010 ...>, name: 'an object' }
console.log(o2.constructor) // [Function: MyClass]
o2.dance(); // I'm dancing
Как насчет этого
var parsed = new Function('return ' + stringifiedJSON )();
Это безопасная альтернатива для функции "eval".
в
var stringifiedJSON = '{"hello":"world"}';
var parsed = new Function('return ' + stringifiedJSON)();
alert(parsed.hello);
в
Рекомендуется использовать формат JSON.парсить`
Есть альтернатива вы можете сделать :
var myObject = eval('(' + myJSONtext + ')');
http://jsbin.com/tidob/1/edit?js,консоль,выход
Родного объекта JSON включает в себя два основных метода.
1. JSON.parse()
2. JSON.stringify()
формат JSON.метод Parse()
метод анализирует JSON в строку, т. е. реконструировать оригинальный объект JavaScriptВАР jsObject = формат JSON.разобрать(jsonString);
ВАР jsonString = формат JSON.преобразовать в строки(jsObject);
Зацени. [
][1]Код:
var myobj = {};
myobj.name="javascriptisawesome";
myobj.age=25;
myobj.mobile=123456789;
debugger;
var str = JSON.stringify(myobj);
alert(str);
var obj = JSON.parse(str);
alert(obj);
$("#save").click(function () {
debugger
var xx = [];
var dd = { "firstname": "", "lastname": "", "address": "" };
var otable1 = $("#table1").dataTable().fnGetData();
for (var i = 0; i < otable1.length; i++) {
dd.firstname = otable1[i][0];
dd.lastname = otable1[i][1];
dd.address = otable1[i][2];
xx.push(dd);
var dd = { "firstname": "", "lastname": "", "address": "" };
}
JSON.stringify(alert(xx));
$.ajax({
url: '../Home/save',
type: 'POST',
data: JSON.stringify({ u: xx }),
contentType: 'application/json;',
dataType: 'json',
success: function (event) {
alert(event);
$("#table2").dataTable().fnDraw();
location.reload();
}
});
});