用Guzzle发送Json

问题描述 投票:-1回答:1

我需要发送Json,其中一个参数是一个数组。以下代码完美无缺。

  $html = $client->post($url,
  ['json'=>[ 'requestData'=>
                                [
                                   'sessionID'=>'261-7306141-0539957'
                                ]
                                ,
                                'productTargets'=>
                                [
                                   [ 'ProductID'=>$data[0] ],
                                   [ 'ProductID'=>$data[1] ],
                                   [ 'ProductID'=>$data[2] ],
                                   [ 'ProductID'=>$data[3] ],
                                   [ 'ProductID'=>$data[4] ],
                                ],

]        ]
                       );

如您所见,我在productTargets中手动输入数据[0],数据[1],数据[2]。我需要发送多个像100的'ProductID'对象。我试过用

                            json_encode( [ [ 'ProductID'=>$data[0] ], 
                                            ['ProductID'=>$data[2] ],       
                                            ['ProductID'=>$data[3] ],       
                                            ['ProductID'=>$data[4] ], ] 
                                         )

但它不起作用。如何发送数据

php guzzle
1个回答
0
投票

也许这样的方法:

<?php
$data =
[
    'json' =>
        [
            'requestData'=>
                [
                    'sessionID'=>'261-7306141-0539957'
                ]
        ]
];

$ids = range(1, 4); // Some dummy ids.
shuffle($ids);

$product_ids = array_map(function($v) {
    return ['ProductID' => $v];
}, $ids);

$data['json']['productTargets'] = $product_ids;
var_dump(json_encode($data, JSON_PRETTY_PRINT));

示例输出:

string(383) "{
    "json": {
        "requestData": {
            "sessionID": "261-7306141-0539957"
        },
        "productTargets": [
            {
                "ProductID": 4
            },
            {
                "ProductID": 3
            },
            {
                "ProductID": 1
            },
            {
                "ProductID": 2
            }
        ]
    }
}"
© www.soinside.com 2019 - 2024. All rights reserved.