【问题标题】:PHP String of arrays to ArrayPHP 数组字符串到数组
【发布时间】:2016-01-09 23:56:51
【问题描述】:

我有一个映射到对象上的 json。 json 如下所示:

{
  "employeeId": "1",
  "firstName": "John",
  "lastName": "Doe",
  "departments": [
    {
      "fieldName": "department",
      "fieldValue": "[dep1, dep2]"
    }
  ]
}

我需要从“fieldValue”中获取数据并将其放入一个数组中。 json_decode 对我不起作用,因为里面的值没有被引用。如果我拥有像"fieldValue": "[\"dep1\",\"dep2\"]" 这样的邮件会非常有帮助,但我无法控制如何接收它。有人对如何用这样的字符串制作数组有一些建议吗?

【问题讨论】:

  • json_decode() 会起作用,因为它是一个有效的 json 结构,我刚刚在 jsonlint.com 中验证了你的 json
  • 你累了吗 json_decode($jsondata, true);
  • 您可以使用str_replace(array('[', ']'), '', $fiedvalue),然后使用explode(', ', $fieldvalue)。但我不会推荐这个,因为它不适用于所有值:p
  • 是的,它是一个有效的 json,但它不会从 "fieldValue": "[dep1, dep2]" 生成数组,因为其中的数据无法解码。我也试过json_decode($jsondata, true);谢谢@Thaillie

标签: php arrays json mapping


【解决方案1】:

不确定它是不是好的变种,但你可以使用 json_decode 函数两次:

$json = '{
  "employeeId": "1",
  "firstName": "John",
  "lastName": "Doe",
  "departments": [
    {
      "fieldName": "department",
      "fieldValue": "[dep1, dep2]"
    }
  ]
}';

$decodedJson = json_decode($json);
$fieldValue = json_decode(strtr($decodedJson->departments[0]->fieldValue, array(
    '[' => '["',
    ']' => '"]',
    ',' => '","'
)));
var_dump($fieldValue);

【讨论】:

  • 谢谢,这只有在 ' " ' 字符被转义时才有效。另外,'dep1'、'dep2' 等字段不应该是必须包含'"'字符。
【解决方案2】:
$var = "[dev1, dev2]";
$keywords = preg_split('/[\[+\]]/', $var);

$keywords[1] 将是您的答案。

然后,您可以使用str_split()$keywords[1] 变量拆分为一个数组

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    相关资源
    最近更新 更多