我有这个JSON字符串,我想用json_decode();
函数
{"phase":2,"id":"pagelet_profile_picture","css":["VCxcl","Ix2pq"],"js":["fZYUE","VfnZ3"],"content":{"pagelet_profile_picture":"\u003cdiv class=\"profile-picture\">\u003cspan class=\"profile-picture-overlay\">\u003c\/span>\u003cimg class=\"photo img\" src\=\"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/222_111_2222_n.jpg\" alt=\"bla bla\" id=\"profile_pic\" \/>\u003c\/div>"}}
有json_last_error();
,但它没有帮助我。 (有时得到JSON_ERROR_STATE_MISMATCH和JSON_ERROR_SYNTAX)
我想知道这个JSON字符串有什么问题,以及如何在PHP中自动修复它,以便我可以解码它。 一些代码将非常有用 感谢。
答案 0 :(得分:2)
使用json lint,似乎问题是src \ =
\转义=符号,这没有任何意义。
如果用src =替换src \ =,它会传递验证器。
修复:
或
答案 1 :(得分:1)
错误编码的问题在于它只是一个错误的编码。然后事情就会破裂。
如果问题与Ben在他的回答中指出的无效转义序列有关,你可以尝试修复这些序列的输入字符串,可能是一个更聪明的算法,正在寻找任何不需要的转义序列,用它替换它通过删除转义字符\
,它是非转义值。
您可以通过创建需要实际转义的字符列表,然后解析转义字符的整个字符串,如果找到,检查下一个字符是否需要转义然后处理。
然而,这只是一种策略,并且因为输入没有正确编码,所以要修复它们并不容易,因为它们已经被破坏了。