我是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。無論如何,你在這個解決方案的工作中使用什麼樣的組件? –