【发布时间】:2021-02-07 13:51:06
【问题描述】:
我的服务器从真实设备接收 JSON 数据,然后将其保存在 MySQL JSON 字段中。不幸的是,制造商似乎在他们的代码中有一个错误,导致部分数据被字符串化转义 JSON。
[
"foo",
"bar",
"info",
{
"data": "{\"parts\":[{\"id\":1,\"serial\":\"19777\",\"type\":\"NONE\",\"key\":\"\"}]}",
"vendor": "Test",
"message": "Hello world"
}
]
即使使用JSON_UNESCAPED_SLASHES 运行json_decode 也会产生一个字符串
Array
(
[0] => foo
[1] => bar
[2] => info
[3] => Array
(
[data] => {"parts":[{"id":1,"serial":"19777","type":"NONE","key":""}]}
[vendor] => Test
[message] => Hello world
)
)
但预期的输出是
Array
(
[0] => foo
[1] => bar
[2] => info
[3] => Array
(
[data] => Array
(
[parts] => Array
(
[0] => Array
(
[id] => 1
[serial] => 19777
[type] => NONE
[key] =>
)
)
)
[vendor] => Test
[message] => Hellow world
)
)
由于我不能指望他们很快发布固件更新,我是否可以在整个 JSON 上运行任何函数来识别字符串化 JSON 并在保存到 MySQL 之前重新编码请求,但不会影响其他消息没有类似的bug?
【问题讨论】: