fetch("https://facebook.github.io/react-native/movies.json")
.then(response => response.json())
.then((responseJson) => {
console.log('HI THERE')
// console.error(responseJson);
})
.catch(error => {
console.log(error);
});
我如何在php中将此字符串解析为array(带有键,值)。
{‘a’: True, ‘b’: ‘c’, 'd':{'e': 'f', 'g': h}}
这不是标准的json。我不能使用json_decode。
我尝试了json_decode。
样本数据:
Array( a -> True b -> 'c' d -> Array( e -> f g -> h ) )
答案 0 :(得分:0)
您可以以此为起点:
$data="{'timestamp': '0.', 'class': 'vbd_metrics', 'snapshot': {'io_read_kbs': 0.0, 'last_updated': <DateTime u'19700101T00:00:00Z' at 8b7cacc>, 'uuid': '7b3e71e5-b43a-2c5d-d582-09302901c7fe', 'other_config': {}, 'io_write_kbs': 0.0}, 'operation': 'mod', 'ref': 'OpaqueRef:1c934395-abe1-36a8-9926-20c5e03c1799', 'id': '895794'}";
Var_dump(eval('return '.join('',array_slice(array_map(
function($v){
if(is_array($v)){
$v[1]=str_replace('’','"',$v[1]);
$v[1]=str_replace('‘','"',$v[1]);
$v[1]=trim($v[1]);
if(!empty($v[1])&&$v[1][0]==='<'&&$v[1][strlen($v[1])-1]==='>')
$v[1]=substr($v[1],1,-1);
$v=$v[1];
}else{
if($v==='{') $v='[';
if($v==='}') $v=']';
if($v===':') $v='=>';
if($v==='<') $v='"';
if($v==='>') $v='"';
}
return $v;
},token_get_all('<?php '.$data.' ?>')),1,-1)).';'));
输出为:
array(6) {
["timestamp"]=>
string(2) "0."
["class"]=>
string(11) "vbd_metrics"
["snapshot"]=>
array(5) {
["io_read_kbs"]=>
float(0)
["last_updated"]=>
string(38) "DateTimeu'19700101T00:00:00Z'at8b7cacc"
["uuid"]=>
string(36) "7b3e71e5-b43a-2c5d-d582-09302901c7fe"
["other_config"]=>
array(0) {
}
["io_write_kbs"]=>
float(0)
}
["operation"]=>
string(3) "mod"
["ref"]=>
string(46) "OpaqueRef:1c934395-abe1-36a8-9926-20c5e03c1799"
["id"]=>
string(6) "895794"
}
此代码基本上模拟了有效的PHP代码的解析,然后允许使用str_replace轻松替换某些字符。最后我们删除Start标记和end标记。我们加入数组以获取字符串,然后使用eval返回它作为有效数组。肮脏但有效。