4

私はいくつかの JavaScript ライブラリを使用してきましたが、それらのほとんどが次の形式で入力を受け取ることに気付きました。[{"foo": "bar", "12": "true"}]

json.orgによると:

ここに画像の説明を入力

したがって、オブジェクトを配列で送信しています。

だから私は2つの部分からなる質問があります:

パート 1: オブジェクトまたは配列を送信するだけではどうですか?

Part2: このような Json を Php で作成するにはどうすればよいでしょうか?

これは実用的な方法ですが、多次元配列ではそのままでは機能しないため、少し見苦しいことがわかりました。

    <?php 
$object[0] = array("foo" => "bar", 12 => true); 

$encoded_object = json_encode($object); 
?> 

出力:

{"1": {"foo": "bar", "12": "true"}}

<?php $encoded = json_encode(array_values($object)); ?> 

出力:

[{"foo": "bar", "12": "true"}]

4

3 に答える 3

9
  1. それが複数のオブジェクトを渡す論理的な方法だからです。おそらくこれを容易にするために作られています:

    [{"foo" : "bar", "12" : "true"}, {"foo" : "baz", "12" : "false"}]
    
  2. PHP で同じ論理構造を使用します。

    echo json_encode(array(array("foo" => "bar", "12" => "true")));
    
于 2012-08-27T08:53:14.607 に答える
0

配列は、複数のパラメーターをサポートする便利な方法として使用されます。この場合、最初のパラメーターはオブジェクトです。

于 2012-08-27T08:49:44.500 に答える
0

質問 1:

JSON は、オブジェクトおよび/または配列を文字列として表す方法にすぎません。配列またはオブジェクトを文字列として持っている場合、クライアントのブラウザなど、さまざまな場所に送信する方がはるかに簡単です。言語が異なれば、配列とオブジェクトの処理方法も異なります。したがって、たとえば、php に配列がある場合、それをクライアントに直接送信することはできません。これは、php だけが理解できる形式であるためです。これが、JSON が役立つ理由です。これは、多くの異なる言語が理解できる配列またはオブジェクトを文字列に変換する方法です。

質問 2:

上記のようなオブジェクトの配列を出力するには、次のようにします。

<?php
    //create a test array of objects
    $testarray = array();
    $testarray[] = json_decode('{"type":"apple", "number":4, "price":5}');
    $testarray[] = json_decode('{"type":"orange", "number":3, "price":8}');
    $testarray[] = json_decode('{"type":"banana", "number":8, "price":3}');
    $testarray[] = json_decode('{"type":"coconut", "number":2, "price":9}');

    $arraycount = count($testarray);


    echo("[");

    $i = 1;
    foreach($testarray as $object)
    {
        echo(json_encode($object));
        if($i !== $arraycount)
        {
            echo(",");
        }

        $i += 1;
    }

    echo("]");
?>

これはオブジェクトの配列を取り、それらをループします。それらをループする前に、左角かっこを出力します。

次に、配列内の各オブジェクトについて、JSON にエンコードされ、各オブジェクトの後にコンマが追加されて出力されます。最後にコンマを出力しないように、反復回数をカウントします。

于 2012-08-27T09:31:19.843 に答える