企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[Xunsearch PHP-SDK](http://www.xunsearch.com) v1.4.8 API 参考文档 # XSJsonDataSource [All Packages](#)| [属性](#)| [方法(函数)](#) | 包 | [XS.util](#) | |-----|-----| | 继承关系 | class XSJsonDataSource »[XSDataSource](#) | | 版本 | 1.0.0 | | 源代码 | [sdk/php/util/XSDataSource.class.php](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php) | JSON 数据源要求以 \n (换行符) 分割, 每行为一条完整的 json 数据 ### Public 属性 [隐去继承来的属性](#) | 名称 | 类型 | 描述 | 定义于 | |-----|-----|-----|-----| | [invalidLines](#) | | | XSJsonDataSource | ### Protected 属性 [隐去继承来的属性](#) | 名称 | 类型 | 描述 | 定义于 | |-----|-----|-----|-----| | [arg](#) | | | [XSDataSource](#) | | [inCli](#) | | | [XSDataSource](#) | | [type](#) | | | [XSDataSource](#) | ### Public 方法 [隐去继承来的方法](#) | 名称 | 描述 | 定义于 | |-----|-----|-----| | [__construct()](#) | 构造函数 | [XSDataSource](#) | | [getCharset()](#) | 取得数据源的准确字符集 | [XSDataSource](#) | | [getData()](#) | 从数据源中提取一条数据 | [XSDataSource](#) | | [instance()](#) | 取得数据源对象实例 | [XSDataSource](#) | ### Protected 方法 [隐去继承来的方法](#) | 名称 | 描述 | 定义于 | |-----|-----|-----| | [deinit()](#) | | XSJsonDataSource | | [getDataList()](#) | | XSJsonDataSource | | [init()](#) | | XSJsonDataSource | ### 属性明细 invalidLines属性 public **$invalidLines**; ### 方法明细 deinit()方法 <table class="summaryTable"><tr><td colspan="3"><div class="signature2">protected void <b>deinit</b>()</div></td></tr></table> **源码:**[sdk/php/util/XSDataSource.class.php#L287](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L287) (**[显示](#)**) `protected function deinit() {     if ($this->fd) {         fclose($this->fd);         $this->fd = null;     } }` getDataList()方法 <table class="summaryTable"><tr><td colspan="3"><div class="signature2">protected void <b>getDataList</b>()</div></td></tr></table> **源码:**[sdk/php/util/XSDataSource.class.php#L295](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L295) (**[显示](#)**) `protected function getDataList() {     // read line (check to timeout?)     $line = '';     while (true) {         $buf = fgets($this->fd, 8192);         if ($buf === false || strlen($buf) === 0) {             break;         }         $line .= $buf;         if (strlen($buf) < 8191 || substr($buf, - 1, 1) === "\n") {             break;         }     }     // empty line (end of file)     if (empty($line)) {         if ($this->inCli) {             echo "INFO: reach end of the file, total lines: " . $this->line . "\n";         }         return false;     }     // try to decode the line     $this->line++;     $line = rtrim($line, "\r\n");     if (strlen($line) === 0) {         if ($this->inCli) {             echo "WARNING: empty line #" . $this->line . "\n";         }         $this->invalidLines++;         return $this->getDataList();     }     $item = json_decode($line, true);     if (!is_array($item) || count($item) === 0) {         switch (json_last_error()) {             case JSON_ERROR_DEPTH:                 $error = ' - Maximum stack depth exceeded';                 break;             case JSON_ERROR_CTRL_CHAR:                 $error = ' - Unexpected control character found';                 break;             case JSON_ERROR_SYNTAX:                 $error = ' - Syntax error, malformed JSON';                 break;             default :                 $error = (count($item) === 0 ? ' - Empty array' : '');                 break;         }         if ($this->inCli) {             echo "WARNING: invalid line #" . $this->line . $error . "\n";         }         $this->invalidLines++;         return $this->getDataList();     }     return array($item); }` init()方法 <table class="summaryTable"><tr><td colspan="3"><div class="signature2">protected void <b>init</b>()</div></td></tr></table> **源码:**[sdk/php/util/XSDataSource.class.php#L274](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L274) (**[显示](#)**) `protected function init() {     $file = $this->arg;     if (empty($file) && $this->inCli) {         echo "WARNING: input file not specified, read data from <STDIN>\n";         $file = 'php://stdin';     }     if (!($this->fd = fopen($file, 'r'))) {         throw new XSException("Can not open input file: '$file'");     }     $this->line = 0; }` Copyright © 2008-2011 by [杭州云圣网络科技有限公司](http://www.xunsearch.com) All Rights Reserved.