dongtuoao7987 2016-02-19 10:34
浏览 278
已采纳

以json内容格式返回文件

I have a txt file with this structure:

17/02/2016 9:50 [info] "hello"
17/02/2016 10:20 [debug] "world"

now I'm trying to read it with:

$fh = fopen($this->_logPath, "r");
$content = array(); 

while ($line = fgets($fh))
{
    array_push($content, $line);
}
fclose($fh);

return json_encode($content);

the file is readed correctly but, in my chrome extension for try Rest API I get in the json tab:

unexpected string

how I can return each line in json content? For example a result like this:

"trace": {
     info: {
         date: {
             "17/02/2016 9:50" {
                -"content": "hello"
            }     
         }
       } 
     debug: {
          date: { 
             "17/02/2016 10:20" {
               -"content": "world"
              }  
          }
       }
    }

or if someone have a better organization I'll glad to see.

  • 写回答

1条回答 默认 最新

  • dongmu2517 2016-02-19 10:47
    关注

    I would choose a structure like this:

    {  
       "trace":[  
          {  
             "date":"17/02/2016 9:50",
             "level":"debug",
             "message":"hello"
          },
          { 
             "date":"17/02/2016 9:50",
             "level":"debug",
             "message":"hello"
          }
       ]
    }
    

    Notice that trace contains an array of logitems. To parse your file, following should work:

    $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);
    

    for experimenting with json you may enjoy https://jsonformatter.curiousconcept.com/ which I've always found very useful.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog