簡體   English   中英

在 Talend 中使用 tJava 使用 kafka 主題中的 Json

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM