将打印格式的JSON转换为有效的JSON

时间:2010-09-26 07:15:53

标签: php file input json

我有一个格式化为JSON的文本文件,但是以打印/视图友好格式,我想将该字符串转换为有效的JSON。 基本上,我想使用 PHP5 读取文件并调用 json_decode 来反序列化字符串。 但是,json_decode无法解析“打印友好”的json字符串。

我收到错误4 JSON无效或格式错误。

看起来其他人遇到了与我类似的问题:PHP json_decode() returns NULL with valid JSON?

我使用notepad ++来编写json文件。

那么,我该如何转换

发件人:

{
    "data": [
        {
            "thumbImg": "thumbImg",
            "street": "street",
            "city": "Fort Worth",
            "state": "Texas",
            "zip": "76192-0001",
            "url": "url"
        }
    ]
}

{"data":[{"thumbImg": "thumbImg", "street": "street", "city": "Fort Worth", "state": "Texas", "zip": "76192-0001", "url": "url"}]

我甚至尝试过以下操作:

<?php
$filename = "links.json";
$file = fopen($filename, "r");

$lines = file($filename);

$data = "";
;
foreach ($lines as $line_num => $line) {
    $formatted = trim($line);
    $formatted = str_replace("\r", "", $formatted);
    $formatted = str_replace("\n", "", $formatted);
    $data .= $formatted;        
}

$json = json_decode($data, true);
?>

我做了一个生成的json字符串的var_dump,http://jsonlint.com/将它标记为有效的json;但是,由于某种原因,json_decode无法反序列化json字符串。

谢谢!

我将文本文件的编码设置为UTF-8而没有BOM,现在工作正常。谢谢大家!

1 个答案:

答案 0 :(得分:5)

<?php
$filename = "links.json";
$file = file_get_contents($filename);    

$json = json_decode($file, true);
?>


参考文献:
  - file_get_contents()
  - json_decode()