我正在开发一项服务,该服务可以转换、翻译和规范化以半结构化 json 形式接收的记录。要求如下:
- 传入相同类型的json实体(类型-人, 地址等)可能不具有相同的属性。
- 某些属性可能不会出现在给定类型的每个实体中。
- 属性可以重命名。
- 传入的 json 实体最初是未类型化的。可以通过分析可用字段来确定传入实体的类型。所以我想需要规则来将实体重新分类到它们的 Drools/Java 类。
- 可能无法保证给定属性中的数据始终属于同一类型(尽管所有内容都可以默认为字符串)。
当然,这些要求都与Java相反,在other posts中有注释。 (虽然几年前)已经指出很难用 Drools 处理 json。
有没有办法在上述场景中和谐地应用 Drools,或者是否有最小的限制(除了强加强大数据模型的明显解决方案之外)来纠正这种情况?
最佳答案
我可以想到一些可能对您有用的方法:
- 将您的 JSON 事实解析为内存结构(使用 Gson 或 Jackson 之类的东西),并将这些结构作为事实插入到 drools 中。然后应该可以用 LHS 编写可以匹配解析的事实的规则。也可以通过 Gson/Jackson API 更新事实。
- 通过创建(如果我没记错的话)RuleImpl 类的实例,可以直接用 Java 编写 drools facts。然后,您可以提供一个任意的 LHS,它可以按照您的意愿解析/匹配任意 JSON。
关于java - 使用 Drools 以结构松散的 JSON 实体形式处理事实的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885608/