解决致命错误未捕获的pcrov \ JsonReader \ Parser \ ParseException(php json)

时间:2017-10-08 23:41:02

标签: php json

我正在使用JSON pull parser for PHP 7从巨大的 25GB json文件中提取数据。这是my dummy json file 数据提取工作正常,直到json文件的Line 153731,然后我收到此错误:

Fatal error: Uncaught pcrov\JsonReader\Parser\ParseException: Line 153731: Unexpected 'u'. in 
 C:\xampp\htdocs\json\pcrov\vendor\pcrov\jsonreader\src\Parser\Lexer.php:134 
 Stack trace: 
#0 C:\xampp\htdocs\json\pcrov\vendor\pcrov\jsonreader\src\Parser\Lexer.php(97): pcrov\JsonReader\Parser\Lexer->consumeLiteral('ull') 
#1 [internal function]: pcrov\JsonReader\Parser\Lexer->getIterator() 
#2 C:\xampp\htdocs\json\pcrov\vendor\pcrov\jsonreader\src\Parser\Parser.php(180): IteratorIterator->next() 
#3 C:\xampp\htdocs\json\pcrov\vendor\pcrov\jsonreader\src\Parser\Parser.php(152): pcrov\JsonReader\Parser\Parser->parsePair() 
#4 C:\xampp\htdocs\json\pcrov\vendor\pcrov\jsonreader\src\Parser\Parser.php(205): pcrov\JsonReader\Parser\Parser->parseObject() 
#5 C:\xampp\htdocs\json\pcrov\vendor\pcrov\jsonreader\src\Parser\Parser.php(123): pcrov\JsonReader\Parser\Parser->parseValue() 
#6 C:\xampp\htdocs\json\pcrov\vendor\pcrov\jsonreader\src\Parser\Parser.php(202): pcrov\JsonReader\Parser\Parser->parseArray() 
#7 C:\xampp\htdocs\json\pcrov\vendor\ in C:\xampp\htdocs\json\pcrov\vendor\pcrov\jsonreader\src\Parser\Lexer.php on line 134

我用google搜索并梳理了stackoverflow以了解如何解决问题,但一直没有成功。

这是我的代码:

 <?php
 require_once 'C:/xampp/htdocs/json/pcrov/vendor/autoload.php';
 use \pcrov\JsonReader\JsonReader;
 ini_set("max_execution_time", 0);
 $reader = new JsonReader();
 $reader->open("myjsonfile.json");
 $fo = fopen("mycsv.csv", "w" );
 fputs($fo, "name, ultimateHoldingCompany".PHP_EOL);                                                    
 while($reader->read()) {
  $name = null;
  $uhcName = null;  
  if ($reader->read("entityName")){
    $name = null;
    $entityName = $reader->value();
  }

  if ($reader->read("ultimateHoldingCompany")){     
    $uhcName = null;
    $ultimateHoldingCompany = $reader->value();
    if (empty($ultimateHoldingCompany)){
        $uhcName = null;
    }
    else {
        $uhcName = $ultimateHoldingCompany[0]['name'];
    }

    //print_r($uhcName); die;

    }

   fputs($fo,  $entityName.",".$uhcName.PHP_EOL);
  }
 $reader->close();
 ?>

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我通过将json文件拆分成更小的块来解决问题。