0

私は本質的に json オブジェクトを文字列の入力をより簡単にするこの小さなパーサーを作成しています。ご覧のとおり、2 つの入力フィールドがあり、最初のフィールドをテーブル名に使用し、次のフィールドをデータ ページとして使用します。私は非常に単純なものから始めているので、これが複雑な例ではうまくいかないことはわかっています。それは後ほど。{} がいくつか欠けているようですが、後で追加します。しかし、基本的に私の小さなパーサーは次のように吐き出します。

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

しかし今、私は興味があります.これは技術的には機能するjsonオブジェクトですよね? 私が意味するvar「オブジェクト」。

これがエルコードです!

<!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>
4

2 に答える 2

3

いいえ、それは有効な JSON ではありません。[...]要素のコンマ区切りリストである必要がある配列を囲みます。括弧内にkey:valueペアがあり、セミコロンで区切られています。

使っていない理由はありますJSON.stringify()か?

于 2013-08-16T06:19:26.503 に答える
1

最初のオブジェクトは、有効な 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()、挿入しようとしているキーと値のペアを配列に保持できないため、動作してもあまり役に立ちません。

これらをオブジェクトリテラルでラップすると修正されます。上記を参照し、配列に表示されるセミコロンも削除します。

于 2013-08-16T06:24:59.320 に答える