我需要从大量有些复杂的嵌套JSON消息中收集一些关键信息,这些消息随着时间的推移而不断发展。每条消息引用相同类型的事件,但消息由多个生成器生成,并且有两个(可能在将来可能更多)模式。每条消息的关键信息类似,但到这些字段的映射取决于消息类型。
我无法分享实际数据,但这是一个例子:
Message A
—header:
|—attribute1
|—attribute2
—typeA:
|—typeAStruct1:
||—property1
|-typeAStruct2:
||-property2
Message B
-attribute1
-attribute2
-contents:
|-message:
||-TypeB:
|||-property1
|||-TypeBStruct:
||||-property2
我想生成一个数据表,看起来像这样,无论消息类型如何:
| MessageSchema | Property1 | Property2 |
| :———————————- | :———————— | :———————— |
| MessageA | A1 | A2 |
| MessageB | B1 | B2 |
| MessageA | A3 | A4 |
| MessageB | B3 | B4 |
我当前的策略是使用模式A读取数据并与使用模式B读取的数据联合。然后,我可以过滤使用B模式解析类型A消息所产生的空值,反之亦然。这似乎非常低效,特别是一旦出现第三或第四个模式。我希望能够在第一次传递时正确解析消息并应用正确的模式。
答案 0 :(得分:0)
正如我所看到的 - 只有一种方式:
显然,如果你改变了常见的'架构 - 您需要定制适配器'同样。