[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.
- 权威指南
- 新手上路
- 最新主要变动
- 概述
- 关于 Xunsearch PHP-SDK
- 安装、升级
- 体验 demo 项目
- 开发规范
- 开发流程
- 了解基础对象
- 基础对象概述
- XS 项目
- XSException 异常
- XSDocument 文档
- XSIndex 索引管理
- XSSearch 搜索
- XSTokenizer 分词接口
- 编写项目配置文件
- 项目配置详解
- 自定义分词器
- 编写第一个配置文件
- 管理索引
- 索引概述
- 添加文档
- 更新、修改文档
- 删除文档
- 清空索引
- 平滑重建索引
- 使用索引缓冲区
- 自定义SCWS词库
- 使用搜索
- 搜索概述
- 构建搜索语句
- 获取搜索匹配结果
- 获取搜索匹配数量
- 获取热门搜索词
- 获取相关搜索词
- 搜索建议和纠错
- 按字段值分面搜索
- 使用辅助工具
- RequiredCheck 运行检测
- Indexer 索引管理器
- Quest 搜索测试工具
- SearchSkel 生成搜索代码
- IniWizzard 配置文件向导
- Logger 搜索日志管理
- 专题
- 同义词搜索功能
- 在SDK中使用SCWS分词
- API 指南
- XS
- XS
- XSCommand
- XSComponent
- XSDocument
- XSErrorException
- XSException
- XSFieldMeta
- XSFieldScheme
- XSIndex
- XSSearch
- XSServer
- XS.tokenizer
- XSTokenizer
- XSTokenizerFull
- XSTokenizerNone
- XSTokenizerScws
- XSTokenizerSplit
- XSTokenizerXlen
- XSTokenizerXstep
- XS.util
- XSCsvDataSource
- XSDataFilter
- XSDatabaseDataSource
- XSDebugFilter
- XSJsonDataSource
- XSUtil
- XS.util.db
- XSDatabase
- XSDatabaseMySQL
- XSDatabaseMySQLI
- XSDatabasePDO
- XSDatabasePDO_MySQL
- XSDatabasePDO_PgSQL
- XSDatabasePDO_SQLite
- XSDatabasePgSQL
- XSDatabaseSQLite
- XSDatabaseSQLite3
- XS.utilf
- XSDataSource
- 其它文档
- 关于 xunsearch
- 特色和优势
- Xunsearch 架构简图
- 下载 Xunsearch
- 商业服务与支持
- XunSearch 授权许可证