[x3d-public] X3DJSONLD ... converts XML to JSON client side!

Leonard Daly Leonard.Daly at realism.com
Tue Mar 20 14:27:53 PDT 2018


On 3/20/2018 1:07 PM, John Carlson wrote:
>
> Since I convert from X3D XML to X3D JSON and back, the only real 
> problems are differences between the two formats.  If I were 
> converting from VRML to X3D JSON and back, the issues might be 
> different.  I think, but am not sure, that X3D JSON is more similar to 
> VRML in its structure etc.  However, I am not familiar with VRML.
>

John,

Some of the issues are intrinsic to the format. There are numbers/values 
vs. strings as you mention below, different ways of dealing with arrays 
(also indirectly mentioned below), and comments (not mentioned). JSON 
does not have provisions for comments (text that is not stored in the 
object). Douglas Crockford (creator of JSON) offers four reasons at 
https://groups.yahoo.com/neo/groups/json/conversations/topics/156. [Lots 
of other links: 
https://stackoverflow.com/questions/244777/can-comments-be-used-in-json]

1) Numbers/values: Part (perhaps most) of this difficulty lies in the 
way X3D encodes multi-element values into strings. Numeric vectors are 
not too bad, but I can see where some representations are difficult to 
handle. Is it true that once an XML file is parsed and internally 
stored, creating the equivalent JSON (at least as far as value 
conversions) is relatively easy?

2) Perhaps it would be better to change the XML encoding for V4 to 
reduce the variability of individual elements and elements that are part 
of an array.

3) As I understand the X3D definition of JSON encoding, XML comments are 
converted into JSON data elements. If that is the case, an X3D 
application (meaning an application that ingests X3D data) should be 
able to modify the comments are create output in XML by modifying the 
data structure represented by JSON. That may not be possible if the 
input was XML and the application was using a valid XML parser as 
comments are not part of the XML document's character data. (see 
https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-comments).

Leonard Daly



> It might be best to look at my code to see where the difficulties like.
>
> I recommend DOM2JSONSerializer.js, X3DJSONLD.js in 
> https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/node 
> and some of the serializers which traverse JSON instead of DOM show 
> the issue better.  In general, if we didn’t rely on so much 
> information derived from the X3D Unified Object Model, and there was 
> more of a direct transformation between encodings and source code 
> encodings (JavaScriptSerializer.js, PythonSerializer.js, 
> JavaSerializer.js), without knowledge of external sources 
> (mapToMethod*.js, fieldTypes.js), that would be good, too.
>
> Mostly the problem is containerFields I think.  If container Fields 
> were treated more similar to XML, it might be easier.  It might also 
> be better to review the requirements of X3D JSON with regards to 
> unordering and ordering of nodes, statements, etc.   If we assumed 
> order did not necessarily mean order, it would be easier, I think.
>
> Various links of interest:
>
> http://www.web3d.org/x3d/stylesheets/X3dToJson.html
>
> http://www.web3d.org/wiki/index.php/X3D_JSON_Encoding
>
> I just don’t think we can get to the simpler tools, without banging 
> our users over the head.   But we are really banging the programmers 
> on the head, at the expense of 1) making the encoding meet the 
> requirements, instead of using JSON more like XML.
>
> One more thing.  If type was required in fieldValue, I wouldn’t have 
> to look it up in the field.  Minor nit that I have fixed.
>
> John
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for 
> Windows 10
>
> *From: *Leonard Daly <mailto:Leonard.Daly at realism.com>
> *Sent: *Tuesday, March 20, 2018 3:08 PM
> *To: *John Carlson <mailto:yottzumm at gmail.com>; x3d-public at web3d.org 
> <mailto:x3d-public at web3d.org>
> *Subject: *Re: [x3d-public] X3DJSONLD ... converts XML to JSON client 
> side!
>
> John,
>
> It appears to me that your biggest/most-important request is to define 
> a nice/simpler JSON encoding for X3D than the one currently being 
> used. I am going to continue this discussion based on that assumption. 
> If it is not the case, please clarify.
>
> You have been working with this for quite some time. My experience is 
> in general JSON, not necessarily the X3D flavor. Can you describe what 
> is currently difficult or complex in the current X3D-Json flavor. 
> There is no sense on redoing/revising what is currently working well. 
> What I would like to understand is the top 3-5 difficult or messy 
> conversion issues and what makes them messy.
>
> Thanks,
>
> Leonard Daly
>
>
>     Because X3D JSON is very different from X3D XML.  They don’t map
>     well with standard methods.
>
>     Yes, it will take a little more work to handle circular
>     dependencies, and all the extra variables in DOM.
>
>     Are you proposing JSON.stringify(xmlDom)?  I think that would
>     generate way to much data, and XMLSerializer would work better,
>     but XMLSerializer produces XML.  But that’s essentially what
>     DOM2JSONSerializer is, serializes DOM to X3D JSON.  Duh!
>
>     The revolution here is that I can do it client side.  I already
>     had X3dToJson.xslt to do it server side. X3dToJson.xslt doesn’t
>     work client side, last I checked.
>
>     I don’t think you’ve found the golden egg yet, Leonard, but see below.
>
>     John
>
>     I encourage you to propose an X3D JSON standard based on this to
>     see if it will fly.  Send some PROTO examples to the mailing
>     list—believe me, I tried.  The first step is to standardize X3D
>     JSON, not find an XML to JSON converter.  But to finalize the X3D
>     JSON standard, we need two implementations.  Now we have 2
>     implementations.
>
>     Please proposed an X3D JSON standard that is simpler, PLEASE????
>
>     Thanks!
>
>     Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986>
>     for Windows 10
>
>     *From: *Leonard Daly <mailto:Leonard.Daly at realism.com>
>     *Sent: *Tuesday, March 20, 2018 11:30 AM
>     *To: *x3d-public at web3d.org <mailto:x3d-public at web3d.org>
>     *Subject: *Re: [x3d-public] X3DJSONLD ... converts XML to JSON
>     client side!
>
>     John,
>
>     I am wondering how this might differ from the following built-in
>     capabilities described below. What does your code do differently
>     than these built-in methods?
>
>
>     XD is an (string) XML fragment, then this fragment can be inserted
>     into the DOM (either as part of the document of a separate
>     sub-tree) using
>
>     var parser = new DOMParser();
>     var xmlDom = parser.parserFromString (XD, 'application/xml');
>
>     [Ref: https://developer.mozilla.org/en-US/docs/Web/API/DOMParser]
>
>     At this point xmlDom is a DOM tree, but not inserted into the HTML
>     document DOM.
>
>     It is possible to go back to XML string using
>
>     var S = new XMLSerializer();
>     var xmlString = s.serializeToString (xmlDom);
>
>     [Ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer]
>
>     There is the JSON.stringify method
>
>     [Ref:
>     https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
>     and
>     https://stackoverflow.com/questions/46880822/how-to-json-stringify-a-dom-element
>     - answer 1]
>
>     There is at least one other GItHub project
>     (https://gist.github.com/sstur/7379870) that converts to/from JSON
>     and strings/DOM.
>
>     Going from an internal object to JSON takes a little careful work
>     to make sure the tree is correctly handled and the code does not
>     follow the circular loops that are present in DOM.
>
>
>     Leonard Daly
>
>
>
>
>         The X3D JSON Loader now converts XML to JSON client-side, for
>         your nefarious purposes!
>
>         https://coderextreme.net/X3DJSONLD/src/main/html/index.html
>
>         Enjoy loading!
>
>         John
>
>
>
>
>
>         _______________________________________________
>
>         x3d-public mailing list
>
>         x3d-public at web3d.org <mailto:x3d-public at web3d.org>
>
>         http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>     -- 
>     *Leonard Daly*
>     3D Systems & Cloud Consultant
>     LA ACM SIGGRAPH Past Chair
>     President, Daly Realism - /Creating the Future/
>
> -- 
> *Leonard Daly*
> 3D Systems & Cloud Consultant
> LA ACM SIGGRAPH Past Chair
> President, Daly Realism - /Creating the Future/
>

-- 
*Leonard Daly*
3D Systems & Cloud Consultant
LA ACM SIGGRAPH Past Chair
President, Daly Realism - /Creating the Future/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20180320/cb03313d/attachment-0001.html>


More information about the x3d-public mailing list