24

私は php をあまり使用せず、オブジェクトの作成については少し曖昧です。jsonを送信するWebサービスリクエストを作成する必要があり、その部分はカバーされていると思います。データを送信する前に、ネストされたオブジェクトを作成する必要があります。私は、ecma ベースのスクリプト言語での経験に基づいて、これは些細なことだと思っていましたが、構文をナビゲートするのが難しいことがわかりました。作成したいオブジェクトは以下です。

{ "client": {
    "build": "1.0",
    "name": "xxxxxx",
    "version": "1.0"
    },
    "protocolVersion": 4,
    "data": {
        "distributorId": "xxxx",
        "distributorPin": "xxxx",
        "locale": "en-US"
    }
}

フラット オブジェクトの例はたくさん見てきましたが、ネストされたオブジェクトの最小限の例はまだ見つかりません。上記のオブジェクトの php 構文は何ですか? これはphpで行うのは珍しいことですか?

4

7 に答える 7

47

この JSON 構造は、次の PHP コードで作成できます。

$json = json_encode(array(
     "client" => array(
        "build" => "1.0",
        "name" => "xxxxxx",
        "version" => "1.0"
     ),
     "protocolVersion" => 4,
     "data" => array(
        "distributorId" => "xxxx",
        "distributorPin" => "xxxx",
        "locale" => "en-US"
     )
));

json_encodeを参照

于 2013-04-04T11:53:43.620 に答える
16

複雑な JSON を手動で PHP オブジェクトに変換する簡単な方法を紹介します。

JSON の例を取得します。

{ "client": {
    "build": "1.0",
    "name": "xxxxxx",
    "version": "1.0"
    },
    "protocolVersion": 4,
    "data": {
        "distributorId": "xxxx",
        "distributorPin": "xxxx",
        "locale": "en-US"
    }
}

{検索-置換 array(

:検索-置換 =>

}検索-置換 )

終わり。

于 2016-05-04T22:53:12.473 に答える
4

ユーザー配列を使用して正しい形式を取得し、echo json_encode(array) を呼び出します

           array( "client" => array(
    "build" => "1.0",
    "name" => "xxxxxx",
    "version" => "1.0"
 ),
 "protocolVersion" => 4,
 "data" => array(
    "distributorId" => "xxxx",
    "distributorPin" => "xxxx",
    "locale" => "en-US"
 ))
于 2013-04-04T11:52:32.183 に答える
2

ネストされた配列を構築し、json_encode を実行してネストされた JSON を構築することもできます。

例:

{"User":
       {"username":"test",
        "address":"Posted value fro address field",
        "location":{
                     "id":12345
                    }
        }
}

上記の出力は、以下の php コードを記述することで実現できます。

<?php
$obj = array(
            'username'=>$lv_username,
            'address'=>$lv_address,
            'location'=>array('id'=>$lv_locationId)
    );
$data = '{"User":'. json_encode($obj) .'}';
echo $data;

?>

それが役に立てば幸い。

于 2015-12-20T10:58:45.920 に答える
1

json_encode を使用して、php 配列をエンコードできます http://php.net/manual/en/function.json-encode.php

$theArray = array('client'= array('build'=>'1.0', 
                                'name'=>'xxxxx', 
                                'version'=>'1.0'
                               ), 
                'protocolVersion'=> 4, 
                'data'=> array('distributorId'=>'xxxx', 
                               'distributorPin'=>'xxxx', 
                               'locale'=>'en-US' 
                               ) 
                );

$theObj = json_encode($theArray);

うまくいけば、これは役に立ちます..

それを投稿してから、すでにたくさんの回答を見ました! :|

于 2013-04-04T11:56:39.170 に答える