【问题标题】:Problem sending a JSON string to an API requiring an array of objects将 JSON 字符串发送到需要对象数组的 API 时出现问题
【发布时间】:2018-11-05 08:57:37
【问题描述】:

我有一些 PHP 数据,我想发送到以 JSON 格式编写的 API。 我的数据是一个 PHP 数组,我将其转换为 JSON 对象,然后转换为 JSON 字符串,以便我可以发送。但是 API 需要一个对象数组,如下面的代码所示,我如何编写代码以适应其格式

以 JSON 格式编写的数组要求

{
"children":[
    {"child_name":"abc","child_dob":"2015-05-23"},
    {"child_name":"efg","child_dob":"2016-09-13"}
  ]
}

我的 PHP 代码

//Convert the PHP array to a JSON object
    $child =(object)$children;

    //Convert JSON object to a JSON string to send to server
    $ch = json_encode($child);

    dd($ch);

    //result in browser
   "{"child_name":"mnmbmb","child_dob":"2018-10-30"}"

【问题讨论】:

  • 请告诉我们你的php数组$children
  • “我先转换为 JSON 对象,然后再转换为 JSON 字符串”……这毫无意义。 JSON 只是一个字符串。它可以解码到对象等中,但是一旦你把它变成JSON,你就已经有了一个字符串。当您评论 //Convert the PHP array to a JSON object 时,您实际上仍在将其转换为 PHP 对象。在您将其编码为 JSON 字符串之前,它不是 JSON。您可能会认为我在吹毛求疵,但使用正确的术语会有所帮助,然后每个人都清楚您的意思,并且可以确定您了解自己在做什么。
  • @ADyson 谢谢,注意到了
  • @HarveyFletcher 这是我的孩子数组['child_name' => $childname , 'child_dob' => $childdob]

标签: php json data-transfer


【解决方案1】:

无需将其转换为对象。试试这个

$data=array();
$data['children'] =$children;
//Convert JSON object to a JSON string to send to server
$ch = json_encode($data);

dd($ch);

【讨论】:

  • 嗨,我已经实现了您的解决方案,并且在 dd() "{"children":{"child_name":"mnmbmb","child_dob":"2018-10-30"}}" 之后得到以下数据这仍然会引发 API 错误,该 API 期望 children 属性包含一组对象,如下所示"children":[ {"child_name":"abc","child_dob":"2015-05-23"}, {"child_name":"efg","child_dob":"2016-09-13"} ] 格式
  • 您的$children 数组如上所示仅包含一行,但它应该包含一组值或行。
  • 我检查了文档,它可以接受 1 行,发送的数据是 JSON 字符串,如何将其转换回 API 所需格式的 JSON 对象跨度>
  • 值或行数组我的意思是你的$children 数组必须是一个二维数组。例如尝试将此数组用作$childrenarray(array('child_name'=>'abc','child_dob'=>'2015-05-23'),array('child_name'=>'efg','child_dob'=>'2016-09-13'))
猜你喜欢
  • 2018-03-21
  • 2019-12-02
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多