首页 > 解决方案 > json_encode 将单个元素数组视为对象

问题描述

这是我必须生成的 json

{
  "email": "example@example.com",
  "campaign": {
    "campaignId": "p86zQ"
  },
  "customFieldValues": [
    {
      "customFieldId": "y8jnp",
      "value": ["18-29"]
    }
  ]
}

如果我使用

$data = [
        "email" => $_POST['mail'],
        "campaign" => [
            "campaignId" => "4JIXJ"
        ],
        "customFieldValues" => [
            "customFieldId" => "y8jnp",
            "value" => ["18-29"]
        ]
    ];

我做 json_encode($data)

value 是一个对象,但它应该是一个具有单个元素的数组。不知何故 json_encode 将其视为一个对象。我可以强制它将其视为具有单个元素的数组吗?

提前致谢

阿德里安

标签: phparraysjsonobjectencoding

解决方案


目前,您有一个包含 2 个元素的数组,而不是包含一个子数组的单个元素的数组。为了获取第一节中的 json,您需要添加另一个数组级别。

$data = [
        "email" => $_POST['mail'],
        "campaign" => [
            "campaignId" => "4JIXJ"
        ],
        "customFieldValues" => [
            [
                "customFieldId" => "y8jnp",
                "value" => ["18-29"]
            ]
        ]
    ];

这会给你这个:

{
    "email": null,
    "campaign": {
        "campaignId": "4JIXJ"
    },
    "customFieldValues": [
       {
          "customFieldId": "y8jnp",
          "value": ["18-29"]
       }
    ]
}

推荐阅读