我正在制作这个小解析器,它实际上使json对象更容易输入字符串。我将看到两个输入字段,我使用第一个作为表名,然后是第二个作为数据页。我开始非常简单,所以我知道这对复杂的例子不起作用。那会晚点。我看到我错过了一些{}但我稍后会添加它们。但基本上我的小解析器吐出来了:
{pizzas:[
size:"large";toppings:"sausage"; ]
}
但是现在我很好奇,这在技术上是一个正常工作的json对象吗?我的意思是“对象”。
这是el代码!
<!DOCTYPE html>
<html>
<head>
</head>
<body>
Input like:<br/>
table: pizzas<br/>
data: size:"large";toppings:"sausage";<br/>
<form name="form1" onsubmit="getString(); return false;">
table name<input type="text" name="tableJob" id="tableJob" value='example: pizzas'><br/>
data<input type="text" name="dataJob" id="dataJob" value='example: size:"large"; toppings:"sausage";'>
<input type="submit" value="Submit">
</form>
<p id="myJson"></p>
<script>
var w, x, y, z;
function getString(){
x = document.getElementById("tableJob").value; //get the table from user
y = document.getElementById("dataJob").value; //get data from user
var object = '<p>{' + x + ':[<br/>' + '  ' + y + ' ]<br/>' + '}';
document.getElementById("myJson").innerHTML = object;
}
//now add object to our json page
</script>
</body>
/////////////////////////////////////////////// ///////////////////////////////// 现在这是正确的方法:
<body>
Input like:<br/>
table: "pizzas"<br/>
data: "size":"large","toppings":"sausage",<br/>
<form name="form1" onsubmit="getString(); return false;">
table name<input type="text" name="tableJob" id="tableJob" value='"pizzas"'><br/>
data<input type="text" name="dataJob" id="dataJob" value='"size":"large", "toppings":"sausage,"'>
<input type="submit" value="Submit">
</form>
<p id="myJson"></p>
<script>
var w, x, y, z;
function getString(){
x = document.getElementById("tableJob").value; //get the table from user
y = document.getElementById("dataJob").value; //get data from user
var obj = '<p>{ ' + x + ' : [<br/>' + '  {' + y + '} ]<br/>' + '}';
document.getElementById("myJson").innerHTML = obj;
var myJsonString =
'{' + x +
':[' + '{' + y + '} ]' +
'}';
alert(myJsonString);
}
</script>
</body>
答案 0 :(得分:3)
不,这不是有效的JSON。 [...]
包含一个数组,该数组必须是以逗号分隔的元素列表。您的括号中有key:value
对,并且它们以分号分隔。
您是否有理由不使用JSON.stringify()
?
答案 1 :(得分:1)
您拥有的第一个对象既不是有效的JSON对象,也不是有效的JavaScript对象文字。
正确的JavaScript对象文字应如下所示:
var pizzas = {
pizzas:[
{size:"large",toppings:"sausage"} ], //Notice the enclosing curlys around size and toppings.
}
其次,您将var object...
取回的对象将如下所示
"<p>{pizzas:[<br/>  size:"large";toppings:"sausage" ]<br/>}"
哪个未被剥离,不是一个对象,而是剥离HTML:
"{pizzas:[size:"large";toppings:"sausage"]}"
仍然不会生成有效的JSON对象,并且工作JSON.stringify()
也无济于事,因为数组无法保存您尝试插入的键值对。
将它们包装在对象文字中将修复它,参见上文,同时删除数组中出现的分号。