'{"id":1,"channel":"1","text":"Hello World!"}{"id":2,"channel":"1","text":"Hello World!"}{"id":2,"channel":"1","text":{"key_x": "value_x"}}'
修改
真正的问题是nginx推送流模块在流中发送存档,这就是为什么我的片段中的json数据之间没有分隔符。
答案 0 :(得分:2)
$str = '{"id":1,"channel":"1","text":"Hello World!"}{"id":2,"channel":"1","text":"Hello World!"}{"id":2,"channel":"1","text":"Hello World!"}';
$str = str_replace('}{', '},{', $str);
$str = '[' . $str . ']';
print_r(json_decode($str));
答案 1 :(得分:0)
我认为如果不改变输出或使用regex / str_replace,这实际上是可行的。
如果您可以控制输出,则应将输出更改为有效的json:
{"data":[
{"id":1,"channel":"1","text":"Hello World!"},
{"id":2,"channel":"1","text":"Hello World!"},
{"id":2,"channel":"1","text":"Hello World!"}
]}
你不能这样做然后你可以尝试使用str_replace与爆炸:
$data = str_replace('}{', '}<should_be_absolut_unique>{');
foreach( explode('<should_be_absolut_unique>', $data) as $json ){
# json_decode($json)
}
这当然是非常不可取的,并且不能保证能够正常工作,因为如果您不知道发送的数据,您不知道字符串替换是否正常工作!