[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 授權許可證