我有一个数据库,我存储一些数据,一个字段是一个json字符串。
我在这个字段中插入一个json:
$stmt->bindParam(":settings", json_encode($widget->settings));
然后,当我尝试检索记录时,我将设置列的行作为字符串。我需要我的数据是json,所以我应该在输出我的记录之前解码这个字段。如果我选择:
$app->response->setBody(json_encode($data, JSON_NUMERIC_CHECK));
我得到类似的东西:
"name":"My Name","label":null,"row":null,"settings":"{\"site\":\"dfsdf\",\"action\":\"UrlInfo\"}"
设置已转义。我应首先解码设置,然后再次编码以输出我的结果。我该怎么做才能解决这个问题?
更新:
我使用PDO检索我的数据,所以我得到一个数组:
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
在我保存之前,我有:
"settings":{"site":"fff","action":"UrlInfo"}}
答案 0 :(得分:2)
检索数据时,应使用json_decode
来反转插入时所执行的编码。
foreach ($data as &$row) { // Use reference so we can modify in place
$row['settings'] = json_decode($row['settings']);
}
$app->response->setBody(json_encode($data, JSON_NUMERIC_CHECK));