Я строю объект вроде {'foo': 'bar'}
Как вернуть строку обратно объекту?
Я строю объект вроде {'foo': 'bar'}
Как вернуть строку обратно объекту?
Вам нужно 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.parse противоположно JSON.stringify.
 JSON.stringify и JSON.parse являются почти oposites, и "обычно" это будет работать:
var obj = ...;
var json = JSON.stringify(obj);  
var obj2 = JSON.parse(json);
так что obj и obj2 являются "одинаковыми".
Однако есть некоторые ограничения, о которых нужно знать. Часто эти проблемы не имеют значения, поскольку вы имеете дело с простыми объектами. Но я проиллюстрирую некоторые из них здесь, используя эту вспомогательную функцию:
function jsonrepack( obj ) { return JSON.parse(JSON.stringify(obj) ); }
Вы получите только ownProperties объекта и проиграете прототипы:
var MyClass = function() { this.foo="foo"; } 
MyClass.prototype = { bar:"bar" }
var o = new MyClass();
var oo = jsonrepack(o);
console.log(oo.bar); // undefined
console.log( oo instanceof MyClass ); // false
Вы потеряете личность:
var o = {};
var oo = jsonrepack(o);
console.log( o === oo ); // false
Функции не выживают:
jsonrepack( { f:function(){} } ); // Returns {}
Объекты Date заканчиваются как строки:
jsonrepack(new Date(1990,2,1)); // Returns '1990-02-01T16:00:00.000Z'
Undefined не выживают:
var v = { x:undefined }
console.log("x" in v);              // true
console.log("x" in jsonrepack(v));  // false
Объекты, которые предоставляют функцию toJSON, могут неправильно вести себя.
x = { f:"foo", toJSON:function(){ return "EGAD"; } }
jsonrepack(x) // Returns 'EGAD'
Я уверен, что есть проблемы с другими встроенными типами. (Все это было протестировано с помощью node.js, так что вы можете получить немного другое поведение в зависимости от вашей среды тоже).
Когда это имеет значение, его иногда можно преодолеть, используя дополнительные параметры JSON.parse и JSON.stringify. Например:
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.parse
Есть альтернатива, которую вы можете сделать:
 var myObject = eval('(' + myJSONtext + ')');
http://jsbin.com/tidob/1/edit?js,console,output
Собственный объект JSON включает в себя два ключевых метода.
1. JSON.parse()
2. JSON.stringify() 
Метод JSON.parse() анализирует строку JSON, т.е. восстанавливает исходный объект JavaScript
 var jsObject = JSON.parse(jsonString);
Метод JSON.stringify() принимает объект JavaScript и возвращает его эквивалент JSON.
 var jsonString = JSON.stringify(jsObject);
Проверьте это. 
http://jsfiddle.net/LD55x/
Код:
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();
        }
    });
});