JSON格式化为字符串,转换为php数组?

时间:2016-10-12 01:18:55

标签: php mysql arrays json

我有一个存储在MYSQL DB中的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\"...

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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