[英]Json Path Read from a Kafka Message
我有一个像下面这样的 kafka 消息,我试图从 json 路径读取数据。 但是,我在从 json 路径读取某些属性时遇到了挑战。 这是示例消息。
样本 1:
{
"header": {
"bu": "google",
"id": "12345",
"bum": "google",
"originTimestamp": "2021-10-09T15:17:09.842+00:00",
"batchSize": "0",
"jobType": "Batch"
},
"payload": {
"derivationdetails": {
"Id": "6783jhvvh897u31y283y",
"itemid": "1234567",
"batchid": 107,
"attributes": {
"itemid": "1234567",
"lineNbr": "1498",
"cat": "5929",
"Id": "6783jhvvh897u31y283y",
"indicator": "false",
"subcat": "3514"
},
"Exception": {
"values": [
{
"type": "PICK",
"value": "blocked",
"Reason": [
"RULE"
],
"rules": [
"439"
]
}
],
"rulesBagInfo": [
{
"Idtype": "XXXX",
"uniqueid": "7889423rbhevfhjaufdyeuiryeukjbdafvjd",
"rulesMatch": [
"439"
]
}
]
}
}
}
}
示例 2:相同的消息,但查看“有效负载”中的差异
{
"header": {
"bu": "google",
"id": "12345",
"bum": "google",
"originTimestamp": "2021-10-09T15:17:09.842+00:00",
"batchSize": "0",
"jobType": "Batch"
},
"payload": {
"Id": "6783jhvvh897u31y283y",
"itemid": "1234567",
"batchid": 107,
"attributes": {
"itemid": "1234567",
"lineNbr": "1498",
"cat": "5929",
"Id": "6783jhvvh897u31y283y",
"indicator": "false",
"subcat": "3514"
},
"Exception": {
"values": [
{
"type": "PICK",
"value": "blocked",
"Reason": [
"RULE"
],
"rules": [
"439"
]
}
],
"rulesBagInfo": [
{
"Idtype": "XXXX",
"uniqueid": "7889423rbhevfhjaufdyeuiryeukjbdafvjd",
"rulesMatch": [
"439"
]
}
]
}
}
}
如果您观察,有时该消息具有“派生详细信息”,有时则没有。 但不管它是否存在,我都需要读取 id、itemid 和 batchid 的值。 我尝试使用
$.payload[*].id
$.payload[*].itemid
$.payload[*].batchid
但是我看到对于batchid,即使它在消息中有一个值,它也返回null,并且如果我使用上述内容,则“属性”下的属性返回null。 对于“属性”下的字段,我使用这个(示例):
$.payload.attributes.itemId
而且,对于如何阅读以下部分完全空白。
"Exception": {
"values": [
{
"type": "PICK",
"value": "blocked",
"Reason": [
"RULE"
],
"rules": [
"439"
]
}
],
"rulesBagInfo": [
{
"Idtype": "XXXX",
"uniqueid": "7889423rbhevfhjaufdyeuiryeukjbdafvjd",
"rulesMatch": [
"439"
]
我对此很陌生,需要一些有关如何正确读取属性的建议。 任何帮助将不胜感激。谢谢
使用..
(递归下降,深度扫描。JSONPath 从 E4X 借用了这个语法。)来获取值。 但是如果有多个具有相同键嵌套的条目,它将返回一个列表。
下面的jsonpath
表达式将返回一个list
,其中为 sample1 和 sample2 各有一个项目
$.payload..attributes.Id
$.payload..attributes.itemid
$.payload..batchid
$.payload..Exception
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.