JSONLoader
JSoNLoader用于將JSoN數(shù)據(jù)加載為Document類型對(duì)象。
使用JsoNLoader需要額外安裝:pip install jq
jq是一個(gè)跨平臺(tái)的json解析工具,LangChain底層對(duì)JSON的解析就是基于jq工具實(shí)現(xiàn)的。
將JSON數(shù)據(jù)的信息抽取出來(lái),封裝為Document對(duì)象,抽取的時(shí)候依賴jq_schema語(yǔ)法。

image.png
了解jq的基本抽取規(guī)則后,即可使用JSoNLoader加載JSON文件了。
from langchain_community.document_loaders import JSONLoader
loader = JSONLoader(
file_path="xxx.json", # 文件路徑
jq_schema=".", # jq schema語(yǔ)法
text_content=False, # 抽取的是否是字符串,默認(rèn)True
json_lines=True, # 是否是JsonLines文件(每一行都是JSON的文件)
)
stu_json_lines.json
{"name": "周杰倫", "age": 11, "gender": "男"}
{"name": "蔡依臨", "age": 12, "gender": "女"}
{"name": "王力鴻", "age": 11, "gender": "男"}
stu.json
{
"name": "周杰倫",
"age": 11,
"hobby": ["唱", "跳", "RAP"],
"other": {
"addr": "深圳",
"tel": "12332112321"
}
}
stus.json
[
{"name": "周杰倫", "age": 11, "gender": "男"},
{"name": "蔡依臨", "age": 12, "gender": "女"},
{"name": "王力鴻", "age": 11, "gender": "男"}
]
from langchain_community.document_loaders import JSONLoader
loader = JSONLoader(
# file_path="data/stu.json",
# jq_schema=".other.addr" # 提取其他信息中的地址
# jq_schema=".name" # 提取姓名
# jq_schema=".age" # 提取年齡
# jq_schema=".gender" # 提取性別
# jq_schema=".hobby[0]" # 提取第一個(gè)愛好
# jq_schema=".other.tel" # 提取電話
# jq_schema=".", # 提取所有字段
# text_content=False # 不提取文本內(nèi)容
# file_path="data/stus.json",
# jq_schema=".[].name", # 提取所有姓名
# text_content=False # 不提取文本內(nèi)容
file_path="data/stu_json_lines.json",
jq_schema=".name", # 提取姓名
# jq_schema=".age", # 提取年齡
# jq_schema=".gender", # 提取性別
# jq_schema=".hobby[0]", # 提取第一個(gè)愛好
# jq_schema=".other.tel", # 提取電話
# jq_schema=".", # 提取所有字段
text_content=False, # 告知JSONLoader,不提取文本內(nèi)容
json_lines=True, # 告知JSONLoader,每行是一個(gè)JSON對(duì)象,而不是一個(gè)數(shù)組
)
document = loader.load()
print(document)

image.png