php - 为什么 json_decode 函数不能解码这个 json 字符串?
问题描述
我想对存储在我的数据库中的字符串进行 json_decode。原始字符串是:
"[{\"drug_id\":\"2\",\"shop_id\":\"1\",\"drug_code\":\"HN0090840\",\"drug_name\":\"\\u5934\\u5b62\\u80f6\\u56ca\",\"manufacturer\":\"\\u4e0a\\u6d77\",\"drug_category_id\":\"3\",\"secondary_category_id\":\"5\",\"drug_type\":\"1\",\"drug_spec\":\"10M\",\"drug_unit_id\":\"6\",\"buy_price\":\"10.90\",\"retail_price\":\"30.03\",\"drug_image\":\"http:\\/\\/doctor-service.oss-cn-beijing.aliyuncs.com\\/img_161423936637.png\",\"banner_image\":\"[\\\"http:\\/\\/doctor-service.oss-cn-beijing.aliyuncs.com\\/img_161423936637.png\\\",\\\"http:\\/\\/doctor-service.oss-cn-beijing.aliyuncs.com\\/img_161423937074.png\\\"]\",\"drug_intro\":\"\",\"drug_details\":\"\\u4e00\\u9897\\u63d0\\u795e\\u9192\\u8111\",\"status\":\"1\",\"is_deleted\":\"0\",\"drug_category_name\":\"\\u63d0\\u795e\\u9192\\u8111\",\"secondary_category_name\":\"\\u6297\\u751f\\u7d20B\",\"drug_unit_name\":\"\",\"drug_type_name\":\"Rx\",\"usage_dosage\":\"\\u53e3\\u670d,1\\u65f61\\u6b21,\\u4e00\\u6b211\\u7247,\\u7528\\u836f1\\u5929\",\"usage_dosage_param\":\"\\u53e3\\u670d,1,\\u65f6,1,1,\\u7247,1,1\",\"quantity\":1}]"
但是当我使用 json_decode 函数来解码这个字符串时,它不起作用:
$drug_list = json_decode(trim($string),true);
所以我认为这个json字符串中可能有反斜杠,所以我使用stripslashes函数去除所有反斜杠:
$drug_list = json_decode(trim(stripcslashes($string)),true);
它什么也不返回。所以我想可能是编码问题,所以我打印了这个长json的编码:
print_r(mb_detect_encoding($string));
它打印“ASCII”,然后我尝试将编码转换为 utf-8:
$string = iconv("ASCII", "UTF-8", $string);
然后我打印iconv的返回值的编码,还是“ASCII”,比较混乱。
然后我尝试了另一个转换编码功能,它仍然不起作用:
mb_convert_encoding($string, 'UTF-8', "ASCII");
我真的很困惑,现在找不到解决这个问题的方法,任何帮助或信息将不胜感激。
解决方案
推荐阅读
- arrays - Scala Arrays - 漂亮地打印一个 N 维矩阵
- java - 如何使用 Scanner 类在一行中读取空格分隔的字符串?
- boost - 访问 Boost Asio 套接字的底层数据
- dynamic-linking - 对同一个可执行文件使用 2 个不同的共享库
- mysql - SQL两表查询
- powershell - Powershell:只知道实际文件名的一部分来测试路径
- python - 如何在 Seaborn 中旋转计数图?
- react-native - 在 React Native 中如何浮动:左右浮动?
- winapi - 在 64 位架构的内存中创建对话框模板
- python - 神经网络错配中的输入和输出形状