Hi all,

Following up 
on https://github.com/gwtproject/gwt/issues/9484#issuecomment-277216304, 
I've been toying around to build a new JSON library for GWT.
Note that my goal is to have a lightweight library that could be used both 
on the client-side with GWT (and then j2cl), and on the server-side or in 
any JVM; and "mapping" to/from POJOs is (currently) out of scope.

What do you think would be the best API?


   - Same as com.google.gwt.json.
   This API is IMO verbose, and is based on wrapper objects that add 
   runtime overhead.
   - Same as elemental.json, except for JsonNull which goes away 
   (represented by a Java 'null' and interchangeable with 'undefined').
   Lighter-weight, both in terms of API verbosity and runtime overhead (no 
   wrapper object).
   Based on type coercion (you can ask every JsonValue to be returned as a 
   boolean, double, or String, and value will be coerced accordingly).
   elemental.json "JRE" types are also usable on client-side, and can be 
   transported through GWT-RPC; I believe this is an aspect that we cannot 
   preserve.
   - Similar to jsinterop-base's Any, JsPropertyMap and JsArrayLike (for 
   JsonValue, JsonObject and JsonArray respectively), and using Java String 
   and primitives for other value types; and probably with the addition of a 
   JsonType enum (or isXxx methods) on Any/JsonValue to be able to tell value 
   types apart before you call the (throwing) asXxx methods.
   This is actually similar to elemental.json but without the JsonBoolean, 
   JsonNumber, and JsonString types; and it throws rather than coercing values.
   This could even go farther and directly use JsonValue[] instead of 
   JsonArray.
   - Something else?

One question also is whether this should be used for consuming JSON mostly, 
or also for creating JSON (you'd generally use POJOs and serialize them to 
JSON I believe, but there may be cases where you want to create a dynamic 
structure that you cannot easily represent as a tree of POJOs), and/or 
"updating/modifying JSON" (parse, update, stringify).

Fwiw, this would also be a good opportunity to shape how a cross-platform 
library would be developed in terms of project layout and tooling (in both 
Gradle and Maven).

Wrt the JVM/server-side support, what JSON parsing library should be used? 
I was heading towards the lightweight Moshi from Square, but I believe 
there could possibly be several "adapters" for Moshi, GSON, Jackson, etc. 
(and even org.json's JsonTokenizer/JsonStringer)

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/8798ff67-2a53-462b-95f7-2e2d9e953b71%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to