php中的json解码问题

php中的json解码问题,php,javascript,json,Php,Javascript,Json,我有php中的衰减字符串: $code = "[[],["Mon","01"," 1.7"," 8","3"," 96","33"," 29.01.2013"],["Tue","01"," 0.3"," 24","2","100","16"," 30.01.2013"],["Wed","01"," 5.4"," 28","2"," 98","5"," 31.01.2013"],["Thu","01"," 8.7"," 22","3"," 92","23"," 01.02.201

我有php中的衰减字符串:

    $code = "[[],["Mon","01","  1.7","  8","3"," 96","33","
29.01.2013"],["Tue","01","  0.3"," 24","2","100","16","
30.01.2013"],["Wed","01","  5.4"," 28","2"," 98","5","
31.01.2013"],["Thu","01","  8.7"," 22","3"," 92","23","
01.02.2013"],["Fri","01","  5.1"," 43","3"," 91","22","
02.02.2013"],["Sat","01","  2.8"," 18","2"," 90","22","
03.02.2013"],["Sun","01","  2.1"," 31","6"," 93","34","
04.02.2013"]]";
现在我尝试用json_decode解码这个字符串。但结果是:

NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
要输出的代码如下所示:

$code = json_decode($code);
print_r($code);

为什么这不起作用?这是我第一次遇到json解码问题…

它不工作,因为它不是有效的json。您可以在这里找到正确的JSON格式:

它不起作用,因为它不是有效的JSON。您可以在这里找到正确的JSON格式:

假设
$code
的内容都在一个字符串中(而不是像现在的语法那样是php数组),错误在于字符串中有换行符

["Mon","01","  1.7","  8","3"," 96","33","
请注意,行的末尾有一个开放的报价。。这导致JSON无效

如果你去掉了所有的换行符,它实际上是有效的。这是我的证据:

array(8) {
  [0]=>
  array(0) {
  }
  [1]=>
  array(8) {
    [0]=>
    string(3) "Mon"
    [1]=>
    string(2) "01"
    [2]=>
    string(5) "  1.7"
    [3]=>
    string(3) "  8"

假设
$code
的内容都在一个字符串中(而不是像现在的语法那样是一个php数组),错误在于字符串中有换行符

["Mon","01","  1.7","  8","3"," 96","33","
请注意,行的末尾有一个开放的报价。。这导致JSON无效

如果你去掉了所有的换行符,它实际上是有效的。这是我的证据:

array(8) {
  [0]=>
  array(0) {
  }
  [1]=>
  array(8) {
    [0]=>
    string(3) "Mon"
    [1]=>
    string(2) "01"
    [2]=>
    string(5) "  1.7"
    [3]=>
    string(3) "  8"

这看起来不像是一个有效的json字符串。如果您使用一个有效的json字符串(如

<?php
$code=... //a valid json string
$result=json_decode($code,true); // now $result will contain an associative array
print_r($result);

这似乎不是有效的json字符串。如果使用有效的json字符串(如

<?php
$code=... //a valid json string
$result=json_decode($code,true); // now $result will contain an associative array
print_r($result);

你说的是
$code=是否都在一个字符串中?这不是有效的JSON。首先,这是一个数组。不是一串。第二,这不是JSON,“$code=“…”是否意味着是一个PHP字符串?这是无效的PHP,因为引号。你引用的代码甚至不应该运行,更不用说生成所有的空值了是否都在一个字符串中?这不是有效的JSON。首先,这是一个数组。不是一串。第二,这不是JSON,“$code=“…”是否意味着是一个PHP字符串?这是无效的PHP,因为引号。您引用的代码甚至不应该运行,更不用说生成所有这些空值了。不是有效的JSON吗?但是通过在php数组上使用json_编码获得了thsi字符串!这是怎么回事?如果你可以编辑你的原始文章,并包含数组的完整编码,我也许可以看到编码端是否有问题。不是有效的JSON?但是通过在php数组上使用json_编码获得了thsi字符串!这怎么可能呢?如果你能用数组的完整编码编辑你的原创文章,我也许能看到编码端是否出了问题。啊!这不能解决问题…非常感谢。。。通过数据库获取字符串,所以可能格式错误,我保存了它。谢谢,问题解决了$d->data=str\u replace(数组(“\r\n”、“\r”、“\n”)、“$d->data);修好了,啊!这不能解决问题…非常感谢。。。通过数据库获取字符串,所以可能格式错误,我保存了它。谢谢,问题解决了$d->data=str\u replace(数组(“\r\n”、“\r”、“\n”)、“$d->data);修好了。