我有一个存储在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()来摆脱\问题?
答案 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文档以获取更多信息!
答案 1 :(得分:0)
有一个名为utf8_decode(string)的实用程序,它先前使用utf8_encode()函数编码转换回ISO-8859-1。从那里你可以使用实用程序来使字符串成为数组/ Json等。
答案 2 :(得分:0)
问题解决了。我将JSON作为字符串发布而不是纯JSON,这使我无法在json_decode出现时使用它。