Php json_encode将单个元素数组视为对象

Php json_encode将单个元素数组视为对象,php,arrays,json,object,encoding,Php,Arrays,Json,Object,Encoding,这是我必须生成的json { "email": "example@example.com", "campaign": { "campaignId": "p86zQ" }, "customFieldValues": [ { "customFieldId": "y8jnp", "value": ["18-29"] } ] } 如果我使用 $data = [ "email" => $_POST['mail'],

这是我必须生成的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_编码($data)

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

提前谢谢


Adrian

目前,您有一个包含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"]
       }
    ]
}

目前,您有一个包含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"]
       }
    ]
}

@treyBake它需要是
json_decode()
而不是
json_encode()
添加真的没有用:(@AnantSingh--AlivetoDie-heh,我的bad@AdrianGier你试过用json解码($data,true)吗?我的错了吗?我刚用了
\u encode
mistake@treyBake它需要是
json\u decode()
not
json\u encode()
添加true不起作用:(@AnantSingh--AlivetoDie-heh,我的bad@AdrianGier你试过json解码($data,true)吗?我的不好-只是用了
\u encode
,错了,一眼就能看出这么小的东西。+1一眼就能看出这么小的东西。+1