【问题标题】:How to convert PHP Multidimensional Array to Json so it works as Json POST request?如何将 PHP 多维数组转换为 Json,使其作为 Json POST 请求工作?
【发布时间】:2021-06-04 06:18:08
【问题描述】:

在执行 POST 请求时,我有以下适用于 Postman 的 JSON:

'{
    "bar1": "sample",
    "bar2": [
        {
            "bar1": "sample",
            "bar2": "sample",
            "bar3": "111111111",
            "bar4": "sample",
            "bar5": {
                "bar6": "varr",
                "bar7": [
                    -70.11111111111111,
                    -33.11111111111111
                ]
            }
        }
    ],
    "bar8": 11111
}'

但是,在我的后端,我有一个数组,我需要将它塑造成那种 JSON 格式。我构建数组的方式如下:

$myArray =array(
                "bar1" => "sample",
                "bar2" => (object) array(
                    "bar1" => "sample",
                    "bar2" => "sample",
                    "bar3" => "111111111",
                    "bar4"=> "sample",
                    "bar5" => (object)[
                        "bar6" => "varr",
                        "bar7" => array(
                            -70.111111111111111,
                            -33.111111111111111
                        )]
                    
            ),
                        "bar8" => 11111
                   ) ;

当通过 cURL 发送请求时,我得到“内部服务器错误”作为响应。如果我要发送 JSON 原始字符串,我会得到正确的响应。将我的 Array 转换为我需要的 JSON 的最佳方法是什么?

json_encode() 给了我以下 JSON,它在发出请求时解析为服务器错误。

{
 "bar1": "sample",
 "bar2": {
  "bar1": "sample",
  "bar2": "sample",
  "bar3": "sample",
  "bar4": "sample",
  "bar5": {
   "bar6": "varr",
   "bar7": [
    -70.111111111111,
    -33.111111111111
   ]
  }
 },
 "bar8": 11111
} 

【问题讨论】:

标签: php json postman


【解决方案1】:

要让json_encode生成一个json对象数组,键bar2需要包含一个数组数组,即

$myArray = array(
    "bar2" => array(
        array(
            "hello" => "world"
        ),
    ),
);

将原始数组更新为以下格式将生成一个 json 对象,其中 bar2 返回一个对象数组。

$myArray = array(
    "bar1" => "sample",
    "bar2" => array(
        array(
            "bar1" => "sample",
            "bar2" => "sample",
            "bar3" => "111111111",
            "bar4" => "sample",
            "bar5" => [
                "bar6" => "varr",
                "bar7" => array(
                    -70.111111111111111,
                    -33.111111111111111
                )
            ]
        )
    ),
    "bar8" => 11111
);

下面的数组会生成下面的json。

{
  "bar1": "sample",
  "bar2": [
    {
      "bar1": "sample",
      "bar2": "sample",
      "bar3": "111111111",
      "bar4": "sample",
      "bar5": {
        "bar6": "varr",
        "bar7": [
          -70.11111111111111,
          -33.111111111111114
        ]
      }
    }
  ],
  "bar8": 11111
}

演示source.

【讨论】:

    【解决方案2】:

    你试过json_encode()函数吗?

    【讨论】:

    • 是的,但是我在使用 json_encode() 时丢失了 { } 或 [ ],这最终导致我在发出 post 请求时出现服务器错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2014-08-23
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多