如何使用aws sdk java jmesparser过滤json

t3psigkw  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(199)

我正在尝试使用awsdkjava提供的javajmesparser(我试过v1,现在是v2)。
使用jmespath网站的测试数据,我使用以下json作为我的 inputValue :

{
  "locations": [
    {"name": "Seattle", "state": "WA"},
    {"name": "New York", "state": "NY"},
    {"name": "Bellevue", "state": "WA"},
    {"name": "Olympia", "state": "WA"}
  ]
}

下面的字符串作为我的jmespath expression :

locations[?state == 'WA'].name

然后我有了以下java:

Expression expression = JmesPathParser.parse(expression);
JmesPathAcceptorGenerator generator = new JmesPathAcceptorGenerator(ClassName.get(model.getMetadata().getFullWaitersInternalPackageName(),
            WaitersRuntimeGeneratorTask.RUNTIME_CLASS_NAME));
generator.interpret(expression, inputValue);

最后一行返回以下内容:

{
  "locations": [
    {"name": "Seattle", "state": "WA"},
    {"name": "New York", "state": "NY"},
    {"name": "Bellevue", "state": "WA"},
    {"name": "Olympia", "state": "WA"}
  ]
}.field("locations").filter(x0 -> x0.field("state").compare("==", x0.constant("WA"))).field("name")

我想是因为 .field() 我需要以某种方式计算以返回结果的部分,但我似乎找不到任何方法。如何让它针对我的json运行过滤器并返回结果?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题