无法将字符串转换为JSON。字符串到有效的JSON和解析PHP中的JSON
我有以下JSON(无效)作为字符串。我需要解析它并获得内在价值。我尝试了很多,但没有得到结果。无法将字符串转换为JSON。字符串到有效的JSON和解析PHP中的JSON
$sJson = '{"Place":"MyStore","PurchaseID":"IND.1234-5678-9012-34567","details":"{\"json\":\"{\\\"PurchaseID\\\":\\\"IND.1234-5678-9012-34567\\\",\\\"categoryname\\\":\\\"smartpack\\\",\\\"productname\\\":\\\"bitcoinpack1\\\",\\\"purchaseTime\\\":1504256011148,\\\"purchaseState\\\":\\\"Success\\\",\\\"UniqueToken\\\":\\\"jbbefjifdkpdpajfkomckoof.AO-J1OzEdsZX17M5pAvedDh1Ep_WwlOKamMQN_3O89bRbAPX-uoqPpTJf8EdNcjMhCK1dptGaWReUCSS9JGCJuh6GlAT0l11mkUddo_uJ4YOe8ezYxlmDQ8\\\"}\",\"currentvalue\":\"S270U2J3XF\\/+XnC1ocPp0d\\/Kwf\\/4B\\/\\/tT7urbDn6F+\\/D8j7VD1t8qqwevtKDnAafAtvocPg4Eevkf\\/GZKl1YOgUYyuY63nyekz7GRDuIKVXAZ+iZtPAbwCuwZplUQHaVA\\/EBMjYpPQM0EFtp2WuX\\/Tx9nTnFCtU+gAK4Rg0zLvQNKSJx5WfqhK7wf0wHTTYviTkB\\/pETnkV22oQDIZH9\\/Fy1FXltC7FXHXoMcxtGvkgPSEFOnms4HumjUQ5PtQUbxh\\/oirQeROCAhkO+WKX9WO3bCKjru1uuxspTLCNGJEKAezi2GEBcpFGjq4iS5N7SfO5BOF76\\/joLe3B7OemJNw==\"}"}';
$sJson = json_encode($sJson,JSON_UNESCAPED_SLASHES);
$json_array = (array) json_decode($sJson,true);
$newjson=preg_replace('/.+?({.+}).+/','$1',$json_array);
var_dump($newjson);
exit;
结果$newjson
不作为JSON对象返回,它只给出字符串。
我需要的JSON对象不是一个字符串。
在给定的JSON中,json
值是一个以"
开头的字符串(在有效的JSON中)。
我需要删除这一点。
的字符串是大多有效的JSON,你只需要调整的几件事情:
首先,"
更换所有\\"
的。 (我不得不两次运行此)
$string = str_replace('\\"', '"', $string);
那么一些大括号的被引用:
$string = str_replace('"{', '{', $string);
$string = str_replace('}"', '}', $string);
这项工作完成,我能成功解码的JSON。这可能可以用preg_replace更快地完成,但我吸取正则表达式。
我也试过。但无法得到结果。 – Gunaseelan
它为我http://sandbox.onlinephpfunctions.com/code/a1102f1d2a3f017404ee2b771e80d5a444a7c17e – aynber
http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ – Quentin
为什么你'json_encode()'已经编码的东西?你不是指'json_decode()'吗?我将使用不同的变量名称作为这个函数的参数和结果。 –
你有什么是无效的JSON ... – Salketer