JSON加载器#

class langchain_community.document_loaders.json_loader.JSONLoader(file_path: str | PathLike, jq_schema: str, content_key: str | None = None, is_content_key_jq_parsable: bool | None = False, metadata_func: Callable[[Dict, Dict], Dict] | None = None, text_content: bool = True, json_lines: bool = False)[source]#

使用jq模式加载一个JSON文件。

Setup:
pip install -U jq
Instantiate:
from langchain_community.document_loaders import JSONLoader
import json
from pathlib import Path

file_path='./sample_quiz.json'
data = json.loads(Path(file_path).read_text())
loader = JSONLoader(
         file_path=file_path,
         jq_schema='.quiz',
         text_content=False)
Load:
docs = loader.load()
print(docs[0].page_content[:100])
print(docs[0].metadata)
{"sport": {"q1": {"question": "Which one is correct team name in
NBA?", "options": ["New York Bulls"
{'source': '/sample_quiz
.json', 'seq_num': 1}
Async load:
docs = await loader.aload()
print(docs[0].page_content[:100])
print(docs[0].metadata)
{"sport": {"q1": {"question": "Which one is correct team name in
NBA?", "options": ["New York Bulls"
{'source': '/sample_quizg
.json', 'seq_num': 1}
Lazy load:
docs = []
docs_lazy = loader.lazy_load()

# async variant:
# docs_lazy = await loader.alazy_load()

for doc in docs_lazy:
    docs.append(doc)
print(docs[0].page_content[:100])
print(docs[0].metadata)
{"sport": {"q1": {"question": "Which one is correct team name in
NBA?", "options": ["New York Bulls"
{'source': '/sample_quiz
.json', 'seq_num': 1}

初始化 JSONLoader。

Parameters:
  • file_path (Union[str, PathLike]) – JSON 或 JSON Lines 文件的路径。

  • jq_schema (str) – 用于从JSON中提取数据或文本的jq模式。

  • content_key (str) – 如果jq_schema的结果是一个对象列表(字典),则用于从JSON中提取内容的键。 如果is_content_key_jq_parsable为True,则这必须是一个与jq兼容的模式。如果is_content_key_jq_parsable为False,则这应该是一个简单的字符串键。

  • is_content_key_jq_parsable (bool) – 一个标志,用于确定content_key是否可以被jq解析。如果为True,content_key将被视为jq模式并相应地进行编译。如果为False或content_key为None,则content_key将作为简单字符串使用。默认值为False。

  • metadata_func (Callable[Dict, Dict]) – 一个函数,它接收由jq_schema提取的JSON对象和默认元数据,并返回更新后的元数据的字典。

  • text_content (bool) – 布尔标志,用于指示内容是否为字符串格式,默认为 True。

  • json_lines (bool) – 布尔标志,用于指示输入是否为JSON Lines格式。

方法

__init__(file_path, jq_schema[, ...])

初始化 JSONLoader。

alazy_load()

一个用于文档的懒加载器。

aload()

将数据加载到Document对象中。

lazy_load()

从JSON文件加载并返回文档。

load()

将数据加载到Document对象中。

load_and_split([text_splitter])

加载文档并将其分割成块。

__init__(file_path: str | PathLike, jq_schema: str, content_key: str | None = None, is_content_key_jq_parsable: bool | None = False, metadata_func: Callable[[Dict, Dict], Dict] | None = None, text_content: bool = True, json_lines: bool = False)[来源]#

初始化 JSONLoader。

Parameters:
  • file_path (Union[str, PathLike]) – JSON 或 JSON Lines 文件的路径。

  • jq_schema (str) – 用于从JSON中提取数据或文本的jq模式。

  • content_key (str) – 如果jq_schema的结果是一个对象列表(字典),则用于从JSON中提取内容的键。 如果is_content_key_jq_parsable为True,则这必须是一个与jq兼容的模式。如果is_content_key_jq_parsable为False,则这应该是一个简单的字符串键。

  • is_content_key_jq_parsable (bool) – 一个标志,用于确定content_key是否可以被jq解析。如果为True,content_key将被视为jq模式并相应地进行编译。如果为False或content_key为None,则content_key将作为简单字符串使用。默认值为False。

  • metadata_func (Callable[Dict, Dict]) – 一个函数,它接收由jq_schema提取的JSON对象和默认元数据,并返回更新后的元数据的字典。

  • text_content (bool) – 布尔标志,用于指示内容是否为字符串格式,默认为 True。

  • json_lines (bool) – 布尔标志,用于指示输入是否为JSON Lines格式。

async alazy_load() AsyncIterator[Document]#

文档的懒加载器。

Return type:

AsyncIterator[Document]

async aload() list[Document]#

将数据加载到Document对象中。

Return type:

列表[Document]

lazy_load() Iterator[Document][source]#

从JSON文件加载并返回文档。

Return type:

迭代器[文档]

load() list[Document]#

将数据加载到Document对象中。

Return type:

列表[Document]

load_and_split(text_splitter: TextSplitter | None = None) list[Document]#

加载文档并将其分割成块。块以文档形式返回。

不要重写此方法。它应该被视为已弃用!

Parameters:

text_splitter (可选[TextSplitter]) – 用于分割文档的TextSplitter实例。 默认为RecursiveCharacterTextSplitter。

Returns:

文档列表。

Return type:

列表[Document]

使用 JSONLoader 的示例