将中文文本解析为json



文本,我看到的是:

紐約建築藝術 陳偉銘 藝術 2016/02/15 在館內
人體百科全書 蘇煥文 科學 2017/09/30 已借出
塞納河畔 葉國威 文學 2017/09/25 已預約
性別與教育 陳文輝 社會學 2016/10/12 已借出
台灣當代社會變革 林東興 社會學 2014/04/17 已借出

,我想输出一个json数组文件,看起来像:

{
"books":[
{"title":" 紐 約 建 築 藝 術 ", "author":" 陳 偉 銘 ", "type":" 藝 術 ", 
"publishDate":"2016/02/15", "status":"在館內"}, 
{"title":" 人 體 百 科 全 書 ", "author":" 蘇 煥 文 ", "type":" 科 學 ", 
"publishDate":"2017/09/30", "status":"已借出"}, 
{"title":" 塞納河畔 ", "author":" 葉國威 ", "type":" 文 學 ", 
"publishDate":"2017/09/25", "status":"已預約"},
{"title":" ... ", "author":" ... ", "type":" ... ", 
"publishDate":"...", "status":"..."}
]}

,这是我的代码:

<?php
// Open the file to read data.
$fh = fopen('Book.txt', 'r');
// define an eampty array
$data = array();
// read data
while ($line = fgets($fh)) {
if (trim($line) != '') {
$line_data = explode('  ', $line);
$data[] = array('title' => trim($line_data[0]), 'author' => trim($line_data[1]), 'type' => trim($line_data[2]), 'publishDate' => trim($line_data[3]), 'status' => trim($line_data[4]));
}
}
fclose($fh);
echo $json_data = json_encode($data);
?>

然后输出(不确定如何将unicode转换回中文)

[{"title":"ufeffu7d10u7d04u5efau7bc9u85ddu8853","author":"u9673u5049u9298","type":"u85ddu8853","publishDate":"2016/02/15","status":"u5728u9928u5167"},{"title":"u6a5fu5668u5b78u7fd2-u4f7fu7528Pythonu8a9eu8a00","author":"u5f35u82b3u6797","type":"u5de5u7a0b","publishDate":"2018/03/29","status":"u5728u9928u5167"},{"title":"u53f0u7063u7576u4ee3u793eu6703u8b8au9769","author":"u6797u6771u8208","type":"u793eu6703u5b78","publishDate":"2014/04/17","status":"u5df2u501fu51fa"}]

json_encode默认转义unicode,这就是中文。将JSON_UNESCAPED_UNICODE添加到json_encode以输出未转义的unicode。

json_encode($data, JSON_UNESCAPED_UNICODE);

并且为了美观地多行打印,您可以将其与JSON_PRETTY_PRINT组合。

json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

相关内容

  • 没有找到相关文章

最新更新