[英]Consume the Json in kafka topic using tJava in Talend
我目前正在嘗試在 Talend Studio 中使用 kafka 創建攝取作業工作流。 該作業將讀取主題“工作”中的 json 數據並存儲到 hive 表中。
json片段:
{"Header": {"Vers":"1.0","Message": "318","Owner": {"ID": 102,"FID": 101},"Mode":"8"},"Request": {"Type":"4","ObjType": "S","OrderParam":[{"Code": "OpType","Value": "30"},{"Code": "Time","Value": "202"},{"Code": "AddProperty","ObjParam": [{"Param": [{"Code": "Sync","Value": "Y"}]}]}]}}
{"Header": {"Vers":"2.0","Message": "318","Owner": {"ID": 103,"FID": 102},"Mode":"8"},"Request": {"Type":"5","ObjType": "S","OrderParam":[{"Code": "OpType","Value": "90"},{"Code": "Time","Value": "203"},{"Code": "AddProperty","ObjParam": [{"Param": [{"Code": "Sync","Value": "Y"}]}]}]}}
Talend 工作流程:
我在這個問題上的重點不是 talend 組件。 但是 tJava 組件中的 java 代碼使用 java 來獲取和讀取 json。
Java代碼:
String output=((String)globalMap.get("tLogRow_1_OUTPUT"));
JSONObject jsonObject = new JSONObject(output);
System.out.println(jsonObject);
String sourceDBName=(jsonObject.getString("Vers"));
上面的代碼能夠從“輸出”變量中的 tLogRow 獲取數據。 但是,它會在讀取 json 對象的空值時給出錯誤。 我應該怎么做才能正確地從 json 獲取數據?
您可以使用tExtractJsonFields
而不是 tJava。 該組件按照您可以在元數據中定義的 json 模式從您的輸入字符串中提取數據。 有了這個,您可以從您的輸入中提取所有字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.