在 Talend 中将 JSON 解析为 MongoDB
parse JSON to MongoDB inTalend
我是 Talend 的新手,向更有经验的人寻求帮助。
我正在尝试从网络服务 RESTFul 下载数据到 MongoDB 数据库,但收到的原始 JSON 格式不允许直接插入到需要的表中,我需要先转换这个 JSON 才能进入一个集合,这样通过 MongoDB 我可以通过 CODE 和 NAME 键进行搜索。
我访问了一些关于这个主题的帖子 (JSON parser for Talend, tRest and map JSON with tExtractJSONField with TALEND, How to Parse Json in Talend using tExtractJsonField),但我无法让它发挥作用。我尝试使用 tFileInputJSON、tMap、tExtractJSONFields,但没有成功。
我需要的 JSON 之一,我得到的格式如下:
[
{"CODIGO":"907","NOME_COMPLETO":"Ag\u00eancia do IBGE em Ceres"},
{"CODIGO":"905","NOME_COMPLETO":"Ag\u00eancia do IBGE em Goi\u00e1s"},
{"CODIGO":"910","NOME_COMPLETO":"Ag\u00eancia do IBGE em Ipor\u00e1"},
{"CODIGO":"919","NOME_COMPLETO":"Ag\u00eancia do IBGE em Itumbiara"},
{"CODIGO":"911","NOME_COMPLETO":"Ag\u00eancia do IBGE em Jaragu\u00e1"},
]
我不知道是否因为文件开头和结尾处存在“[”和“]”,Talend 组件不允许您查看文件架构。比如tRest得到这个JSON,它转化成这样的格式:
{"data":[
{"Body":"[
{\"CODIGO\":\"907\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Ceres\"},
{\"CODIGO\":\"905\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Goi\u00e1s\"},
{\"CODIGO\":\"910\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Ipor\u00e1\"},
{\"CODIGO\":\"919\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Itumbiara\"},
{\"CODIGO\":\"911\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Jaragu\u00e1\"}
]",
"ERROR_CODE":null
}
]
}
因此,tExtractJSONFields只能识别"Body"标签,无法访问"CODIGO"标签,更不用说组件添加的双引号了。
当我在MongoDB中插入这个内容时(使用tMongoDB输出),它创建了一个唯一的记录,并且不允许我通过CODIGO搜索,例如
我需要做什么才能访问标签 CODIGO 和 NOME_COMPLETO?
首先,让我推荐 http://jsonpath.com,我经常用它来检查我的 JSON 路径查询的正确性。
在用于提取 Body
标记的那个之后添加另一个 tExtractJSONFields。然后您可以提取字段 CODIGO
和 NOME_COMPLETO
。或者,JSON 路径循环查询 "$.[*]"
(我在所述网页上尝试过)在 tFileInputJSON 中也可能能够执行以下操作你想要:
我是 Talend 的新手,向更有经验的人寻求帮助。
我正在尝试从网络服务 RESTFul 下载数据到 MongoDB 数据库,但收到的原始 JSON 格式不允许直接插入到需要的表中,我需要先转换这个 JSON 才能进入一个集合,这样通过 MongoDB 我可以通过 CODE 和 NAME 键进行搜索。
我访问了一些关于这个主题的帖子 (JSON parser for Talend, tRest and map JSON with tExtractJSONField with TALEND, How to Parse Json in Talend using tExtractJsonField),但我无法让它发挥作用。我尝试使用 tFileInputJSON、tMap、tExtractJSONFields,但没有成功。
我需要的 JSON 之一,我得到的格式如下:
[
{"CODIGO":"907","NOME_COMPLETO":"Ag\u00eancia do IBGE em Ceres"},
{"CODIGO":"905","NOME_COMPLETO":"Ag\u00eancia do IBGE em Goi\u00e1s"},
{"CODIGO":"910","NOME_COMPLETO":"Ag\u00eancia do IBGE em Ipor\u00e1"},
{"CODIGO":"919","NOME_COMPLETO":"Ag\u00eancia do IBGE em Itumbiara"},
{"CODIGO":"911","NOME_COMPLETO":"Ag\u00eancia do IBGE em Jaragu\u00e1"},
]
我不知道是否因为文件开头和结尾处存在“[”和“]”,Talend 组件不允许您查看文件架构。比如tRest得到这个JSON,它转化成这样的格式:
{"data":[
{"Body":"[
{\"CODIGO\":\"907\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Ceres\"},
{\"CODIGO\":\"905\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Goi\u00e1s\"},
{\"CODIGO\":\"910\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Ipor\u00e1\"},
{\"CODIGO\":\"919\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Itumbiara\"},
{\"CODIGO\":\"911\",\"NOME_COMPLETO\":\"Ag\u00eancia do IBGE em Jaragu\u00e1\"}
]",
"ERROR_CODE":null
}
]
}
因此,tExtractJSONFields只能识别"Body"标签,无法访问"CODIGO"标签,更不用说组件添加的双引号了。
当我在MongoDB中插入这个内容时(使用tMongoDB输出),它创建了一个唯一的记录,并且不允许我通过CODIGO搜索,例如
我需要做什么才能访问标签 CODIGO 和 NOME_COMPLETO?
首先,让我推荐 http://jsonpath.com,我经常用它来检查我的 JSON 路径查询的正确性。
在用于提取 Body
标记的那个之后添加另一个 tExtractJSONFields。然后您可以提取字段 CODIGO
和 NOME_COMPLETO
。或者,JSON 路径循环查询 "$.[*]"
(我在所述网页上尝试过)在 tFileInputJSON 中也可能能够执行以下操作你想要: