我有一个格式化为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,现在工作正常。谢谢大家!
答案 0 :(得分:5)
<?php
$filename = "links.json";
$file = file_get_contents($filename);
$json = json_decode($file, true);
?>
参考文献:
- file_get_contents()
- json_decode()