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。
用于文档的懒加载。
aload
()将数据加载到文档对象中。
从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]
- load_and_split(text_splitter: Optional[TextSplitter] = None) List[Document]¶
加载文档并将它们分割成块。这些块作为Document返回。
请勿覆盖此方法。应考虑将其废弃!
- 参数
text_splitter (可选[TextSplitter]) – 用于分割文档的TextSplitter实例。默认为RecursiveCharacterTextSplitter。
- 返回:
文档列表。
- 返回类型
List[Document]