Json_decode 返回 null 和 Error 4

3
当我解码Json时,得到的是null。$contactInfo是一个从Java(Android)通过Volley推送的字符串。我检查了该字符串,它是一个字符串。
我尝试过以下方法:
1)将$contactInfo设置为仅包含一个用户的联系人
2)删除空格
3)删除特殊字符如♡
4)删除+
最接近读取这种[[data,data],[data,data]]数据的解决方案是使用json decode。是否有其他方法可以将其读入数组或Json中?
$contactInfo = "[[john qiu, +16266169643], [Vince, +65 5888 8447]]"
$obj = stripslashes($contactInfo);
$obj = json_decode($obj);
echo json_last_error(); 

echo返回JSON_ERROR_SYNTAX

对于一些用户的contactInfo,可能会包含特殊字符,比如“♡”


如果出现了关于$data的错误,那么错误信息已经很明显地提示了——它不是有效的JSON语法。如果你指的是[[john qiu, +1626643]],那么它也不是有效的JSON语法。 - Devon
你从哪里获取这些数据的?当然还有其他方法,但最好直接在数据源处解决数据格式问题。 - Devon
[[john qiu, +1626643]] 不是有效的 JSON,应该是 {[john qiu, +1626643]}。你能够输出整个返回的字符串,并告诉我们格式是否总是相同的吗?也许我们可以想出一个解码函数。 - Pawel Bieszczad
@PawelBieszczad 我尝试了硬编码 {[john qiu,+1626643]}。我已经更新了我收到的“整个转储”。 - CodeGuru
@PawelBieszczad,你想写下你的答案吗? - CodeGuru
显示剩余7条评论
4个回答

2
正确的JSON格式如下:
$contactInfo = '[["john qiu", 16266169643], ["Vince", 6558888447]]"

您可以验证输出结果是否正确,例如在此类网站上进行验证。


0

这段代码怎么样?

$contactInfo = "[[john qiu, +1626643]]";
$obj = json_decode($contactInfo, true);
var_dump($obj);

不行 :( 仍然得到 null - CodeGuru

0
$contactInfo = "[[john qiu, +16266169643], [Vince, +65 5888 8447]]" 

在PHP中,$contactInfo本身就是一个数组。为了避免出现任何错误,请确保非数字值用引号括起来。例如:
$contactInfo = "[['john qiu', '+16266169643'], ['Vince', '+65 5888 8447']]" 

0
整个字符串应该用单引号括起来,这样你就可以用双引号封装JSON字符串片段。
<?php
$contactInfo = '[["john qiu", "+16266169643"], ["Vince", "+65 5888 8447"]]';
json_decode($contactInfo, true);
echo json_last_error(); 
?>
<b>output 0</b>

如果您的数据格式不是这样的,您可能需要进行一些聪明的 preg_replace。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接