我试图过滤数组中的json对象,但是我得到了无效的输出。
HazelcastInstance hazelCast = Hazelcast.newHazelcastInstance();
IMap<String, HazelcastJsonValue> departments = hazelCast.getMap("deps");
departments.put("1",
new HazelcastJsonValue("{\r\n"
+ " \"departmentId\": 1,\r\n"
+ " \"room\": \"alpha\",\r\n"
+ " \"people\": [\r\n"
+ " {\r\n"
+ " \"name\": \"Peter\",\r\n"
+ " \"age\": 26,\r\n"
+ " \"salary\": 50000\r\n"
+ " },\r\n"
+ " {\r\n"
+ " \"name\": \"Jonah\",\r\n"
+ " \"age\": 50,\r\n"
+ " \"salary\": 140000\r\n"
+ " }\r\n"
+ " ]\r\n"
+ "}"));
Collection<HazelcastJsonValue> departmentWithPeter = departments.values(new SqlPredicate("people[any].name='Peter'"));
System.err.println(departmentWithPeter.toString());预期输出:-
{
"departmentId": 1,
"room": "alpha",
"people": [
{
"name": "Peter",
"age": 26,
"salary": 50000
}
]
}这里的问题是什么。还有没有其他函数支持json过滤。
发布于 2021-03-17 16:55:32
我认为你得到的输出是正确的。您的查询是:“查找包含任何名为‘Peter’的人员的所有部门”。因此,您基本上可以查询具有该条件的部门。
我认为您不能以如此简单的方式过滤JSON的内部结构。
https://stackoverflow.com/questions/66667350
复制相似问题