嗨我有一个看起来像这样的字符串,
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,但是如果列中包含','则会产生错误数据,因此拆分也不是一个好的解决方案。
谢谢
答案 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.replace
和IsNaN
使用以下方法(以保留整数值)函数:
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");