【问题标题】:JSON which is formatted as string, convert to php array?格式化为字符串的 JSON,转换为 php 数组?
【发布时间】:2016-10-12 01:18:54
【问题描述】:

我有一个存储在 MYSQL 数据库中的 JSON 字符串。示例:

stdClass Object (
[product] => stdClass Object
    (
        [sold_individually] => 
        [regular_price] => 
        [managing_stock] => 1
        [sku] => 0001
        [title] => Sample title
        [reviews_allowed] => 1...

等等

我已经使用 utf8_encode() 来转换它。然后如何将其转换为 PHP 数组以便我可以使用它?

编辑 1

我现在在发布到数据库时使用了 json_encode()。我还不得不使用 addSlashes(),因为我遇到了一些值的格式问题。

当我现在提取数据时,它看起来像:

"{\"product\": {\"sold_individually\": false, \"regular_price\": \"\", \"managing_stock\": true, \"sku\": \"W-C-6500\", \"title\": \"Sample title\"...

如何提取“title”的值?我还应该使用 str_replace() 来摆脱 \ 问题吗?

【问题讨论】:

  • 你试过PHP的“json_decode”函数吗?
  • 你试过 $array = json_decode($json,1); ?
  • 是的,我尝试过使用 json_decode() 并且得到了 NULL。我需要将字符串转换为对象吗?

标签: php mysql arrays json


【解决方案1】:

您打印的不是 JSON,我认为它是 php 对象的字符串表示形式。因此,如果可能,您应该将实际的 JSON 存储到数据库中。它更简单、更清洁、更紧凑。

为此,请使用 json_encode($your_object) 将数据插入数据库。

要检索它,请使用 json_decode($string_from_database)。

这应该像一个魅力。

注意: 但是有一个陷阱,默认情况下, json_decode 将创建一个 php 对象而不是数组。所以你必须检索你的字段作为对象的属性:

$data = json_decode($string_from_database);
$data->product->title; // to access title in your data structure

但是如果你想要一个数组,你可以提供一个参数来获取一个数组,然后它的工作原理是这样的:

$data = json_decode($string_from_database, true);
$data['product']['title']; // to access title in your data structure

查看 json_decode 的 php 文档了解更多信息!

http://php.net/manual/fr/function.json-decode.php

【讨论】:

  • 谢谢,这真的很有帮助。我意识到我在发布之前设置了 json_decode,这是问题所在。我现在可以在发布它时使用 json_encode 并使用 json_decode 来检索它。我如何访问特定字段?即:标题
  • 哦,是的,有一个陷阱,默认情况下,json_decode 会创建一个 php 对象,而不是一个数组。所以你必须检索你的字段作为对象的属性: $data = json_decode($string_from_database); $数据->产品->标题; // 访问数据结构中的标题
  • 但是如果你想要一个数组,你可以提供一个参数来获取这样的数组:json_decode($string_from_database, true) 在这种情况下,你可以像这样访问数据:$data[ 'product']['title'] 查看 json_decode 的 php 文档以获取更多信息!
  • 谢谢路易斯。我昨天意识到我们已经将它作为一个字符串而不是纯 JSON 发布。我设法使用了您在上面发布的内容,现在它就像一种享受;)谢谢。
【解决方案2】:

有一个名为 utf8_decode(string) 的实用程序,它可以将以前使用 utf8_encode() 函数编码的代码转换回 ISO-8859-1。从那里您可以使用实用程序将字符串设为数组/Json 等。

【讨论】:

    【解决方案3】:

    问题解决了。我将 JSON 作为字符串而不是纯 JSON 发布,这使我无法在 json_decode 回来时使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-09
      • 2013-08-27
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 2019-06-08
      • 2016-04-28
      • 1970-01-01
      相关资源
      最近更新 更多