【发布时间】:2019-05-27 01:36:36
【问题描述】:
我有如下 json 字符串从 kakfa 主题 {“card_id”:348702330256514,“member_id”:37495066290,“amount”:4380912,“postcode”:96774,“pos_id”:248063406800722,“transaction_dt”:“ 01-03-2018 08:24:29”}
如何使用带有 TransactionData.class 的 ObjectMapper 解析这些数据,并使用 getter 和 setter 读取值。
rdd.foreach(a -> { System.out.println(a);
ObjectMapper mapper = new ObjectMapper();
TransactionData cardTransactions =
mapper.readValue(a,TransactionData.class);
System.out.println(cardTransactions);
TransactionData transData = new TransactionData();
JSONObject obj = new
JSONObject(cardTransactions.toString());
String cardId = obj.get(“card_id”).toString();
System.out.println(“Printing json cardId: “+ cardId);
transData.setCard_id(cardId);
String memberId = obj.get(“member_id”).toString();
System.out.println(“Printing json memberId: “+ memberId);
transData.setMember_id(memberId);
int amount = obj.getInt(“amount”);
System.out.println(“Printing json Amount: “+ amount);
transData.setAmount(amount);
int postcode = obj.getInt(“postcode”);
System.out.println(“Printing json Postcode: “+ postcode);
transData.setPostcode(postcode);
String pos_id = obj.get(“pos_id”).toString();
System.out.println(“Printing json pos_id: “+ pos_id);
transData.setPos_id(pos_id);
String transaction_dt = obj.getString(“transaction_dt”);
System.out.println(“Printing json transaction_dt: “+ transaction_dt);
transData.setTransaction_dt(transaction_dt);
transData.setUid(cardId + “#” + amount);
System.out.println(“Printing json transaction_dt: “+ transData.getTransaction_dt());
});
【问题讨论】:
-
您能否添加更多详细信息,您想实现什么?在 Spark 中从 Kafka 读取消息并将它们解析为某个类的实例(例如 TransactionData)?
-
在获取这些值后,我在 hbase 中有一个查找表,我将在其中检查卡详细信息是否已经存在,以确定传入的交易是否是真实/欺诈然后根据状态我更新了 hbase 中的相应表再次。所以为此我有一个名为 HbaseDAO.getTxnDetails() 的单独代码,我在其中管理我的 hbase 功能,我想知道使用对象映射器并实现这一点。如果不让我知道,希望我按要求提供详细信息。
-
我也有一个 TransactionData 类,所有列都声明了 getter 和 setter,一旦我解析,我应该能够将此数据传递给 HbaseDAO 类,我将在其中进行验证。
标签: java json apache-spark parsing