我在解析网页后得到了这个字符串。它看起来与此类似,它不是JSON的有效格式。我想知道我是否可以解析这个字符串以获得所需的值。
string(4747) " _result_ ={status:"OK",loc:"India",
country:{regions:[{ap:"755",mp:"768"},{up:"125",mh:"188"}]},src:"gov"}"
在这里你可以看到,fieldNames根本没有引号。我试过json_decode()返回NULL。所以,请帮我解析这个字符串。谢谢。
答案 0 :(得分:0)
如果字段名称只是单字符串,则不需要引号。问题很可能在一开始就是:
" _result_ ="
这就是问题所在。试试str_replace(' _result_ =', '', $string);
,看看它是否会解码。
答案 1 :(得分:0)
看起来您可以直接删除字符串的任何部分,直到第一个{
$raw_string = '...'; // your string to cleanse
$json = substr($raw_string, strpos($raw_string, '{'));
$object = json_decode($json);
答案 2 :(得分:0)
你得到的东西有点像JSONP
(但不是)。大多数情况下,Web服务提供参数来设置前缀(填充)或甚至省略它。如果没有尝试更换它,然后削减为json。您还需要替换尾随的;
..(未显示但应该存在):
// replace the padding
$input = str_replace(' _result_ =', '', $input);
// replace the trailing ';'
$input = rtrim($input, ";")
// now parse as json
var_dump(json_decode($input));