我使用json绑定API来解析部署在Liberty应用程序服务器上的应用程序的json字符串。
假设我有如下所示的json字符串
字符串消息=";{"颜色":"黑色","类型":"宝马"};;
我想遍历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);
}