Слияние кода завершено, страница обновится автоматически
oNode.usePaths()
для использования путей (предполагается текущий уровень как корневой, генерируется путь каждого подузла) обычно используется один раз на корневом уровнеoNode.path()
для получения пути узла (может быть null; например, временного набора)oNode.pathList()
для получения списка путей узла (если это временное множество, будут выделены несколько путей)[n]
getNew(key)
когда узел не является объектомrequest1.result[*].relTickers[0].tickerId
$..[?(@.treePath)]
C{final data: Map}
getEnumConstants
при создании объекта EnumWrap
Добавлена поддержка сериализации пользовательских полей структурных перечислений.
public enum BookType {
NOVEL(2, "роман"),
CLASSICS(3, "классика");
// теперь добавлена поддержка этого
@ONodeAttr public final int code; // используется code как поле сериализации
public final String des;
BookType(int code, String des) {
this.code = code;
this.des = des;
}
}
// ранее поддерживалось только это
public class Book {
String name;
BookType type;
@ONodeAttr(serialize=false) String author; // не сериализовать
@ONodeAttr(format="yyyy-MM-dd") Date releaseTime; // форматировать время вывода
}
$.[?(@.field == 'l1-field-1')].children[?(@.field == 'l2-field-1')]
$[?(@.field == 'l1-field-1')].children[?(@.field == 'l2-field-1')].fields[*]
$..*[?(@.id)]
$.*.*.*
Добавить поддержку красивого форматирования.
Добавление интерфейса selectOrNew(); // Поддерживается только при простых индексных запросах, условные выражения и функции недоступны
Пример:
@Test
public void case1(){
ONode oNode = new ONode();
oNode.selectOrNew("$.orders[0].price").val(500);
System.out.println(oNode.toJson());
// {"orders":[{"price":500}]}
assert "{\"orders\":[{\"price\":500}]}" .equals(oNode.toJson());
oNode.selectOrNew("$.orders[10].price").val(600);
System.out.println(oNode.toJson());
// {"orders":[{"price":500},null,null,null,null,null,null,null,null,null,{"price":600}]}
oNode.select("$.orders").forEach(n -> n.asObject());
System.out.println(oNode.toJson());
// {"orders":[{"price":500},{},{},{},{},{},{},{},{},{},{"price":600}]}
}
Добавить поддержку Kotlin data классов