#json #jsonpath
Вопрос:
{
"data": {
"a": 20,
"b": 30,
"c": 40
}
}
Мое выражение запроса: $.data[?(@.a < (@.b @.c))]
Я надеюсь, что он вернет следующий результат: {"a": 20}
Но в этом случае произойдет следующая ошибка:
Failed to parse filter: [?(@.a < (@.b @.c))], error on position: 9, char: (
Каково правильное выражение?
Комментарии:
1. В чем заключается ошибка, которая возникает?
2. net.minidev.json.синтаксический анализатор. Исключение синтаксического анализа: Неожиданный символ (,) в позиции 60.
3. это опечатка. это должно быть «c»: 40, а не «c»,40
4. Я исправил вопрос, спасибо
Ответ №1:
исправьте строку json следующим образом "c":40
Вы можете преобразовать строку json в JavaObject с помощью ObjectMapper, объектов Java, представляющих вашу строку json
public class Data{
public int a;
public int b;
public int c;
}
public class Root{
public Data data;
}
затем вы можете получить доступ к данным, как показано ниже, которые сопоставляются myJsonString
с объектом java, root
содержит все данные
// import com.fasterxml.jackson.databind.ObjectMapper; // version 2.11.1
// import com.fasterxml.jackson.annotation.JsonProperty; // version 2.11.1
ObjectMapper om = new ObjectMapper();
Root root = om.readValue(myJsonString), Root.class);