可以将其用作json对象吗?自定义字符串到json解析器

Can use this as a json object? Custom string to json parser

本文关键字:json 字符串 自定义 对象      更新时间:2023-09-26

我正在制作这个小解析器,它本质上是用更容易输入的字符串生成json对象。如您所见,我有两个输入字段,第一个用于表名,然后下一个用作数据页。我开始的时候非常简单,所以我知道这对复杂的例子不起作用。那会晚些时候来。我发现我遗漏了一些{},但我稍后会添加这些。但基本上,我的小解析器会吐出:

{pizzas:[
  size:"large";toppings:"sausage"; ]
}

但现在我很好奇,从技术上讲,这是一个工作的json对象,对吧?我的意思是var"object"。

这是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/>' + '&nbsp&nbsp' + y + '&nbsp]<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>{&nbsp' + x + '&nbsp:&nbsp[<br/>' + '&nbsp&nbsp{' + y + '}&nbsp]<br/>' + '}'; 
        document.getElementById("myJson").innerHTML = obj;  
        var myJsonString = 
        '{' + x + 
            ':[' + '{' + y + '} ]' +
        '}';
        alert(myJsonString);    
    }

</script>
</body>

否,这不是有效的JSON。[...]包含一个数组,该数组必须是逗号分隔的元素列表。括号中有key:value对,它们用分号分隔。

你不使用JSON.stringify()有什么原因吗?

您拥有的第一个对象既不是有效的JSON对象,也不是有效的JavaScript对象文字。

一个合适的JavaScript对象文字应该是这样的:

var pizzas = {
  pizzas:[
  {size:"large",toppings:"sausage"} ], //Notice the enclosing curlys around size and toppings.
}

其次,作为var object...返回的对象看起来像这个

"<p>{pizzas:[<br/>&nbsp&nbspsize:"large";toppings:"sausage"&nbsp]<br/>}"

它绝对不是一个对象,而是剥离HTML:

"{pizzas:[size:"large";toppings:"sausage"]}"

仍然无法生成有效的JSON对象,并且工作JSON.stringify()也没有多大帮助,因为数组无法容纳您试图插入的键值对。

将这些封装在对象文字中会修复它,请参见上文,还可以删除数组中出现的分号。