【问题标题】:PhP returning Json in []PhP 在 [] 中返回 Json
【发布时间】:2017-10-04 12:32:09
【问题描述】:

嘿,我正在尝试使用 json_encode 以 json 格式传回数据。

但它似乎返回如下:

[{‘county’:’us’,’sector’:’retail’}]

但是,最终用户表示他们希望得到不带方括号的响应。

我该怎么做?

谢谢。

【问题讨论】:

  • 分享你的代码你是如何生成json的?
  • 你能给我们一个你试图输出的数组的例子吗?同样有趣的事实是,将数组作为 json 的第一层是可以利用的。 OWASP link
  • ?真的吗?我想不出任何时候json_encode 会这样做。您也未能包含minimal reproducible example。我们无法使用您未向我们展示的代码解决问题。
  • json_encode($data[0]) 会给你第一个对象。你所拥有的是一个数组,你正在寻找一个对象。
  • 这样做的目的是通过post请求将数据作为api返回。那么如何返回这个最好的方法呢?

标签: php json


【解决方案1】:

取决于您如何生成您编码的值...json_encode 有一个选项 JSON_FORCE_OBJECT 您可以使用,但据我所知,这可能不是您想要的,因为在我看来这只会变成将“方括号”放入包装对象。不过,如果您想尝试:

json_encode($value, JSON_FORCE_OBJECT);

编辑:正如其他人所说,json_encode($value[0]) 似乎是你想要的。

【讨论】:

  • 完美的 JSON_FORCE_OBJECT 似乎已经成功了,谢谢大家
【解决方案2】:

假设你的数组是:

$data = [
    'country' => 'us',
    'sector' => 'retail',
];

然后像这样返回一个 json_encoded 数组:

json_encode($data);
// {"country":"us","sector":"retail"}

但是,如果您的数据数组像这样“嵌套”:

$data = [[
    'country' => 'us',
    'sector' => 'retail',
]];

然后返回它的编码第一个元素:

json_encode($data[0]);
// {"country":"us","sector":"retail"}

【讨论】:

    【解决方案3】:

    我的经验是,您不小心将数据存储为数组的第一项。

    例如你可能做过:

    $json_store = Array();
    $json_store[] = Array('country' => 'us', 'sector' => 'retail');
    $json = json_encode($json_store);
    

    对此进行测试的一种方法是查看执行以下操作是否会删除括号:

    $json_encode($json_store[0])
    

    如果是这样,您应该修复一个不必要的嵌套数组。可能应该避免使用上述行,因为最好首先修复数据的存储方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 2012-12-18
      • 1970-01-01
      • 2013-05-18
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多