我是Talend的新人,并向更有经验的人寻求帮助。解析JSON到MongoDB inTalend
我想从Web服务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组件不允许您查看文件架构。例如,获得此JSON由TREST,它把这种格式:
{"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只承认“身体”的标签,而不能获得“CODIGO”标签,更不用说组件添加的双引号。
当我插入MongoDB中该内容(使用tMongoDBOutput),它创造了一个独特的记录,并且不会允许我CODIGO进行搜索,例如
我该怎么做才能有机会获得标签CODIGO和NOME_COMPLETO?
您可能需要使用'.loads()从[json](https://docs.python.org/2.7/library/json.html)返回的数据将数据转换为实际的python对象,然后再将它们传递给inTalend –
感谢您的快速回报。问题:我不使用python,而是使用java。无论如何,你在这个解决方案的工作中使用什么样的组件? –