Json_encode以字符串形式返回json单元格

时间:2018-02-08 19:29:57

标签: mysql arrays json mysqli json.net

我有database structure like this. 我愿意将行作为Json.net的json对象。

我的PHP代码就是这个

$check_query = mysqli_query($conn, "select * from users where name = '$name' and password = '$pass'");
$rows = array();
    while($r = mysqli_fetch_assoc($get_query)) {
       $rows[] = $r;
    }
if(count($rows) > 0) {
echo json_encode($rows[0]);
}

我这样得到了json。

{"unique_id":"pcg9sy26","name":"w","password":"w","mail":"alpsavrum@gmail.com","age":18,"locale":"Turkey","city":"Istanbul","subscriptions":"[\"electronics\", \"vacations\"]","history":null,"token":"12562f39b990da0433d7be71992ed634"}

如您所见,订阅值为字符串。我需要它看起来像阵列。

{"unique_id":"pcg9sy26","name":"w","password":"w","mail":"alpsavrum@gmail.com","age":18,"locale":"Turkey","city":"Istanbul","subscriptions":[\"electronics\", \"vacations\"],"history":null,"token":"12562f39b990da0433d7be71992ed634"}

有没有办法实现这一目标。 ?

非常感谢!

2 个答案:

答案 0 :(得分:0)

以您正在阅读的语言尝试json decode函数。 解码JSON响应然后打印

答案 1 :(得分:0)

您检索该数据的方式是将JSON值作为字符串。如果它实际上是JSON数据,那么将它作为JSON存储在数据库中是一个好主意,但+0.j驱动程序不会自动为您反序列化它。如果您想要这种行为,则需要使用ORM。

如果您遇到双重编码问题,请查看mysqli以查看您实际使用的内容。这将显示var_dump键包含JSON字符串,而不是预期的数组。

您需要做的是在JSON编码之前手动反序列化:

subscriptions

您需要对结果可能包含的任何和所有JSON编码字段执行此操作。

这样你就是JSON编码一个合适的PHP数据结构而不是PHP和部分JSON字符串。