如何在javascript中将字符串转换为JSON

时间:2015-07-17 23:23:26

标签: javascript

我正在尝试将以下字符串值转换为JSON:

var yourmsg =  '{"yourid":{"latlng":[123,456],"data":{"id":2345," name ":" basanta ","status":"Available"}}}';

请帮帮我。

3 个答案:

答案 0 :(得分:0)

所有对象键都必须是字符串,您不能使用yourid作为键而不使用qoutation标记:

var yourmsg =  '{"'+yourid + '":{"latlng")+:[' + yourlat + ','+ yourlng + '],"data":{"id":' + yourid +'," name ":" basanta ","status":"Available"}}}';

答案 1 :(得分:0)

这是将字符串转换为JSON对象并将其写入文件的方法:

var yourmsg = '{"yourid":{"latlng":[123,456],"data":{"id":2345," name ":" basanta ","status":"Available"}}}';

yourmsg = JSON.parse(yourmsg); // converts the string to JSON object.

fs.writeFile('file.json', JSON.stringify(yourmsg, null, '\t')); // write to file with tabbed formatting.

答案 2 :(得分:0)

根据问题的原始版本,我认为OP真正想要的是基于三个参数(yourid, yourlat, yourlng)创建JavaScript对象的方法。 OP的尝试是首先创建一个参数化字符串,然后询问如何从中获取一个对象。

如果是这样,这是一种更优雅的方法,可以直接跳到对象创建,避免需要创建字符串并使用JSON.parse()

http://jsbin.com/qebiti/edit?js,console

var msgFactory = (function () {
    return function (id, lat, lng) {
        //id, lat, lng must be numbers because strings need to be quoted
        var msgObject = {};
        msgObject[id] = {
            latlng: [lat, lng],
            data: {
              id: id,
              name: " basanta ",
              status: "Available"
            }
        };
        return msgObject;
      };      
    }()),
    yourid = 2345,
    yourlat = 123,
    yourlng = 456,
    yourmsgObj = msgFactory(yourid, yourlat, yourlng);
console.log(JSON.stringify(yourmsgObj, null, 4));

工厂基于假设(来自评论中的样本数据),参数都是数字。如果需要字符串,那么工厂应引用字符串。

唯一棘手的部分是yourid被用作结果对象中的名称和值。这似乎在编辑问题中丢失了。