langchain_community.document_loaders.json_loader.JSONLoader

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

使用jq模式加载JSON文件。

配置
pip install -U jq
实例化
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)
加载
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}
异步加载
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}
懒加载
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。

参数
  • file_path (Union[str, Path]) – 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) –确定是否可以通过jq解析content_key的标志。如果为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__(文件路径, jq_schema[, ...])

初始化JSONLoader。

alazy_load()

用于文档的懒加载。

aload()

将数据加载到文档对象中。

lazy_load()

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

load()

将数据加载到文档对象中。

load_and_split([text_splitter])

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

__init__(file_path: Union[str, Path], jq_schema: str, content_key: Optional[str] = None, is_content_key_jq_parsable: Optional[bool] = False, metadata_func: Optional[Callable[[Dict, Dict], Dict]] = None, text_content: bool = True, json_lines: bool = False)[源代码]

初始化JSONLoader。

参数
  • file_path (Union[str, Path]) – 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) –确定是否可以通过jq解析content_key的标志。如果为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]

用于文档的懒加载。

返回类型

AsyncIterator[Document]

async aload() List[Document]

将数据加载到文档对象中。

返回类型

List[Document]

lazy_load() Iterator[Document][源代码]

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

返回类型

Iterator[Document]

load() List[Document]

将数据加载到文档对象中。

返回类型

List[Document]

load_and_split(text_splitter: Optional[TextSplitter] = None) List[Document]

加载文档并将它们分割成块。这些块作为Document返回。

请勿覆盖此方法。应考虑将其废弃!

参数

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

返回:

文档列表。

返回类型

List[Document]

关于JSONLoader的使用示例