【问题标题】:json_encode treats a single element array as objectjson_encode 将单个元素数组视为对象
【发布时间】:2019-10-23 13:22:06
【问题描述】:

这是我必须生成的 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 将其视为一个对象。我可以强制它把它当作一个包含单个元素的数组吗?

提前致谢

阿德里安

【问题讨论】:

  • @treyBake 它必须是 json_decode() 而不是 json_encode()
  • 添加真没用 :(
  • @AnantSingh---AlivetoDie 嘿,我的错
  • @AdrianGier 你试过json_decode($data, true) 吗?是我的错 - 只是误用了_encode

标签: php arrays json object encoding


【解决方案1】:

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

【讨论】:

  • 这么小的东西一眼就能看出来。+1
猜你喜欢
  • 1970-01-01
  • 2021-09-11
  • 2014-05-17
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多