JeSON has just seen the light of day and you can be one of the first to work for this thrilling new project.
JeSON stands for JSON essentials and there are two goals this project aims to achieve. First it aims to provide a toolbox for working with JSON. Second it aims to build high level user APIs based on that toolbox. So while everything in the toolbox can be used by end users (application and library developers) as well, as the need be, there will also be ways to use high level APIs to get complex jobs done.
The most interesting of such high level APIs are obviously APIs enabling JSON manipulation and JSON to Java objects binding.
Based on a JSON streaming API for reading and writing JSON, most functionality will be implemented within a visitor API sitting on top of the streaming API. Using the visitor API and a JSON path module it becomes possible to implement easy to use high level APIs that allow for very fast and flexible JSON processing.
While the streaming and visitor APIs and the JSON path module have already been implemented, there is still lots of work to do to integrate them and build high level APIs on those foundations.
If you are an experienced Java developer, preferrably having already worked with visitor APIs such as the low level Java bytecode manipulation API of ASM, we'd like to hear from you and welcome you aboard this new exciting project.
An update: It has become clear now what JeSON is actually going to be: a transformation engine for all representations of JSON, as there are String/Stream, JSON tree and Java objects. All representations can be converted into all others applying transformations along the way. The transformations are expressed using a high level fluent API looking something like:
As simple conversions are just transformations without any changes they are obviously supported as well. So there will be a high level Conversion API and a high level fluent Transformation API. Besides that JeSON will support a comprehensive JSON tree API to make the most of the tree representation. The tree API let's the user handle JSON trees as members of the Java Collections Framework: a JsonObject is a Set<jsonproperty> and can also be viewed as Map<string, jsontype="">, a JsonArray is a List<jsontype>. Furthermore the tree API supports JsonPath to retrieve, insert, update, remove and convert parts of the JSON tree.</jsontype></string,></jsonproperty>
As the project just started there is lots to do in terms of implemention of low level and high level components, as well as unit tests. JavaDoc and user documentation must be created. Performance tests need to be conducted and there are sure to appear lots of other tasks as well.
So if you want to be part of a new exciting project, please drop me a mail.
Matt
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Another update: To differentiate the project better from other JSON libraries / frameworks it has been renamed to Jetro. The JeSON project is discontinued, so for any info about the project, please visit the Jetro project page, or the developer wiki at GitHub.
Thanks, Matt
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
JeSON has just seen the light of day and you can be one of the first to work for this thrilling new project.
JeSON stands for JSON essentials and there are two goals this project aims to achieve. First it aims to provide a toolbox for working with JSON. Second it aims to build high level user APIs based on that toolbox. So while everything in the toolbox can be used by end users (application and library developers) as well, as the need be, there will also be ways to use high level APIs to get complex jobs done.
The most interesting of such high level APIs are obviously APIs enabling JSON manipulation and JSON to Java objects binding.
Based on a JSON streaming API for reading and writing JSON, most functionality will be implemented within a visitor API sitting on top of the streaming API. Using the visitor API and a JSON path module it becomes possible to implement easy to use high level APIs that allow for very fast and flexible JSON processing.
While the streaming and visitor APIs and the JSON path module have already been implemented, there is still lots of work to do to integrate them and build high level APIs on those foundations.
If you are an experienced Java developer, preferrably having already worked with visitor APIs such as the low level Java bytecode manipulation API of ASM, we'd like to hear from you and welcome you aboard this new exciting project.
Kind regards,
Matt - Project Lead - mimarox@users.sourceforge.net
An update: It has become clear now what JeSON is actually going to be: a transformation engine for all representations of JSON, as there are String/Stream, JSON tree and Java objects. All representations can be converted into all others applying transformations along the way. The transformations are expressed using a high level fluent API looking something like:
within(json).at("$.boo").applying(new JsonTransformations() {
protected void defineTransformations() {
at("$.foo[*].bar").store(element);
remove().from("$.baz")
}
}).getAsJson();
As simple conversions are just transformations without any changes they are obviously supported as well. So there will be a high level Conversion API and a high level fluent Transformation API. Besides that JeSON will support a comprehensive JSON tree API to make the most of the tree representation. The tree API let's the user handle JSON trees as members of the Java Collections Framework: a JsonObject is a Set<jsonproperty> and can also be viewed as Map<string, jsontype="">, a JsonArray is a List<jsontype>. Furthermore the tree API supports JsonPath to retrieve, insert, update, remove and convert parts of the JSON tree.</jsontype></string,></jsonproperty>
As the project just started there is lots to do in terms of implemention of low level and high level components, as well as unit tests. JavaDoc and user documentation must be created. Performance tests need to be conducted and there are sure to appear lots of other tasks as well.
So if you want to be part of a new exciting project, please drop me a mail.
Matt
Another update: To differentiate the project better from other JSON libraries / frameworks it has been renamed to Jetro. The JeSON project is discontinued, so for any info about the project, please visit the Jetro project page, or the developer wiki at GitHub.
Thanks, Matt