从TEXT包含 JSON 对象数组的列类型(在本例中为“详细信息”列)的数据库中返回行时遇到问题。例子:{ productid: 1 shopid: 1 title: 'Product 1'--> details: [{"name":"Brand name","value":"Brand value"},{"name":"Color","value":"blue"}] . . .}在类型列中插入数据库的数据在TEXT插入addslashes(json_encode($array_or_object))之前像安全转义一样插入。返回数据时,TEXT按函数类型返回的列json_decode()没有问题。问题当有人试图用单一的发生'和双引号"在details。例子:details: [{"name":"\\\"test123\\\"","value":"\\\"test\\\" \\'test\\' \\\"test \\' test \\' t\\\"est"}]返回值如下所示:"details": [ { "name": "\\\"test123\\\"", "value": "\\\"test\\\" \\'test\\' \\\"test \\' test \\' t\\\"est" }],我有不止一种JSON在数据库中存储数据的方法(作为对象、对象数组、对象数组数组……),我需要一种方法来转义这些反斜杠。使用stripslashes()使用前的字符串json_decode()不起作用,它打破了JSON。创建一个递归函数是可行的,但并不像我希望的那样漂亮。例子:function decode_json($json) { if (empty($json)) { return $json; } if (is_string($json)) { $json = json_decode($json, true); } foreach ($json as $key => $value) { if (is_array($value)) { $json[$key] = decode_json($value); continue; } $json[$key] = stripslashes($value); } return $json;}任何帮助表示赞赏。
2 回答
- 2 回答
- 0 关注
- 210 浏览
添加回答
举报
0/150
提交
取消