我正在使用 json 绑定 API 来解析部署在 Liberty 应用程序服务器上的应用程序的 json 字符串。
假设我有如下给出的 json 字符串
String message = "{ "color" : "Black", "type" : "BMW" }";
我想遍历 json 字符串并检查应用程序逻辑中的每个 json 属性字段(颜色/类型)以查看它是否包含某些特定字符。
如何使用 json-b (Json Binding API) 来完成
我正在使用 json 绑定 API 来解析部署在 Liberty 应用程序服务器上的应用程序的 json 字符串。
假设我有如下给出的 json 字符串
String message = "{ "color" : "Black", "type" : "BMW" }";
我想遍历 json 字符串并检查应用程序逻辑中的每个 json 属性字段(颜色/类型)以查看它是否包含某些特定字符。
如何使用 json-b (Json Binding API) 来完成
这是一个简单的例子:
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();
根据 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);
}