0

我正在使用 json 绑定 API 来解析部署在 Liberty 应用程序服务器上的应用程序的 json 字符串。

假设我有如下给出的 json 字符串

String message = "{ "color" : "Black", "type" : "BMW" }";

我想遍历 json 字符串并检查应用程序逻辑中的每个 json 属性字段(颜色/类型)以查看它是否包含某些特定字符。

如何使用 json-b (Json Binding API) 来完成

4

2 回答 2

0

这是一个简单的例子:

public class Car {
    public String color;
    public String type;
}

...

Jsonb jsonb = JsonbBuilder.create();
Car car = jsonb.fromJson("{ \"color\" : \"Black\", \"type\" : \"BMW\" }", Car.class);
if (car.color.contains("Bla") || car.type.startsWith("B"))
    System.out.println("Found a " + car.type + " that is " + car.color);
jsonb.close();

于 2020-11-18T15:09:10.227 回答
0

根据 JSON-B 规范的第 3.11 节,JSON-B 的实现必须支持绑定到java.util.LinkedHashMap(以及许多其他标准集合类型),因此如果您不知道字段名称是什么,可以执行以下操作:

Jsonb jsonb = JsonbBuilder.create();
LinkedHashMap<String, ?> map = jsonb.fromJson("{ \"color\" : \"Black\", \"type\" : \"BMW\" }", LinkedHashMap.class);
for (Map.Entry<String, ?> entry : map.entrySet()) {
    Object value = entry.getValue();
    if (value instanceof String && ((String) value).contains("Black"))
        System.out.println("Found " + entry.getKey() + " with value of " + value + " in " + map);
}
于 2020-11-19T17:47:06.693 回答