在Javascript中将String数据转换为Object

时间:2016-07-05 10:53:41

标签: javascript json

嗨我有一个看起来像这样的字符串,

ll: 11, kw: sw, wit: jajar

此数据来自Google电子表格,因此这是他们表示行的方式。

我希望将其转换为JavaScript以便于解析。我试过以下但显然没有用。

var mz = data.feed.entry[0].content.$t; //which is ll: 11, kw: sw, wit: jajar
var text = "{"+ miz +"}"
var json = JSON.parse(text)

但是这不会将其转换为JSON并给我以下错误,

  

SyntaxError:JSON.parse:第1行第35列的未终止字符串   JSON数据

如何将这样的字符串转换为JSON以便于解析?我也尝试使用','拆分ext,但是如果列中包含','则会产生错误数据,因此拆分也不是一个好的解决方案。

谢谢

5 个答案:

答案 0 :(得分:1)

   var mz = "ll: 11, kw: sw, wit: jajar";   
    var str = mz.replace(/:/g, '":"');
    str = str.replace(/,/g, '","');
    str = '"' + str + '"';
    var str = '"ll":"11","kw":"sw" ,"wit":"jajar"';
    var text = '{"contents":[' + '{' + str + '}]}';
    obj = JSON.parse(text);
    alert(obj.contents[0].ll + " " + obj.contents[0].kw + " " + obj.contents[0].wit);

这很好用。试试这个。

答案 1 :(得分:0)

你必须使它成为正确的json。

var str = '11: 11, kw: sw, wit: jajar';
str = '{"' +str.replace(/ /gm,"").replace(/:/gm, '":"').replace(/,/gm,'","') + '"}';
console.log(str);

var obj = JSON.parse(str);

console.log(JSON.stringify(obj));

答案 2 :(得分:0)

您可以强制格式化为JSON(因为它类似),或者您可以自己解析它:



var obj = "ll: 11, kw: sw, wit: jajar".split(", ")
    .reduce(function(prev, curr) {
        var keyValue = curr.split(": ");
        var key = keyValue[0];
        var value = keyValue[1];
        var num = Number.parseFloat(value);
        if (value === "true" || value === "false") {
            return (prev[key] = value === "true", prev);
        } else if (!Number.isNaN(num)) {
            return (prev[key] = num, prev);
        }
        return (prev[key] = value, prev);
    }, {});
console.log(obj);




这应该保留布尔&数字原语以及假设其他所有内容都是字符串。

答案 3 :(得分:0)

应引用 json 字符串中的所有字符串参数。
String.replaceIsNaN使用以下方法(以保留整数值)函数:

var mz = "ll: 11, kw: sw, wit: jajar",
    text = "{" + mz.replace(/(\w+?):\s?([^,]+)(,?)/g, function (m, p1, p2, p3) {
            var val = Number(p2);  // check for integer value
            return '"' + p1 + '":' + (isNaN(val)? '"'+p2+'"' : val) + p3;
        }) + "}";

console.log(JSON.parse(text)); // `Object {ll: 11, kw: "sw", wit: "jajar"}`

答案 4 :(得分:-1)

你可以这样做:



String idObjeto = (String) getIntent().getExtras().getStringExtra("IdentidadEnviada");