我目前正在运行此代码。它正在拆分变量$ json,其中有},{但它也删除了这些字符,但实际上我需要json_decode函数的尾随和前导括号才能工作。我创造了一个工作,但想知道是否有更优雅的解决方案?
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5},{"a":1,"b":2,"c":3,"d":4,"e":5}';
$individuals = preg_split('/},{/',$json);
$loop_count =1;
foreach($individuals as $object){
if($loop_count == 1){$object .='}';}
else{$object ="{".$object;}
print_r(json_decode($object));
echo '<br />';
$loop_count++;
}
?>
编辑: $ json变量实际上是作为json对象检索的。一个恰当的例子是
[{ “ID”: “foo” 的, “行”:1, “栏”:1, “高度”:4 “宽度”:5},{ “ID”: “棒”, “行” :2中, “栏”:3, “高度”:4 “宽度”:5}]
答案 0 :(得分:4)
正如你(大概)已经知道的那样,由于逗号和两个对象,你必须开始的字符串是无效的json;它基本上是两个json字符串,它们之间有一个逗号。
你试图通过拆分来解决这个问题,但是有一个更简单的方法可以解决这个问题:
解决方法只是将字符串包装在方括号中,将字符串转换为有效的JSON:
$json = '[' . $json . ']';
瞧。该字符串现在是有效的json,只需调用json_decode()
即可成功解析。
希望有所帮助。
答案 1 :(得分:0)
您可以随时重新添加它们。 试试这个:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5},{"a":1,"b":2,"c":3,"d":4,"e":5}';
$individuals = preg_split('/},{/',$json);
foreach($individuals as $key=>$val)
$individuals[$key] = '{'.$val.'}';