我有一个这种结构的txt文件:
17/02/2016 9:50 [info] "hello"
17/02/2016 10:20 [debug] "world"
现在我试图用以下方式阅读:
$fh = fopen($this->_logPath, "r");
$content = array();
while ($line = fgets($fh))
{
array_push($content, $line);
}
fclose($fh);
return json_encode($content);
该文件已正确加入,但在我的Chrome扩展程序中尝试使用Rest API,我会进入json标签:
意外字符串
如何返回json内容中的每一行?例如,结果如下:
"trace": {
info: {
date: {
"17/02/2016 9:50" {
-"content": "hello"
}
}
}
debug: {
date: {
"17/02/2016 10:20" {
-"content": "world"
}
}
}
}
如果有人有更好的组织,我很乐意看到。
答案 0 :(得分:3)
我会选择这样的结构:
{
"trace":[
{
"date":"17/02/2016 9:50",
"level":"debug",
"message":"hello"
},
{
"date":"17/02/2016 9:50",
"level":"debug",
"message":"hello"
}
]
}
请注意,trace包含一个logitems数组。 要解析您的文件,以下应该可以工作:
$fh = fopen($this->_logPath, "r");
$content = array();
$content["trace"] = array();
while ($line = fgets($fh))
{
$raw = preg_split("/[\[\]]/", $line); //splits string at [ and ], results in an array with three items
$entry = array();
$entry["date"] = trim($raw[0]);
$entry["level"] = trim($raw[1]);
$entry["message"] = trim($raw[2]);
$content["trace"][] = $entry;
}
fclose($fh);
return json_encode($content);
对于使用json进行实验,您可能会喜欢https://jsonformatter.curiousconcept.com/,我总是觉得它很有用。