I have a requirement to transform an incoming JSON to an output JSON. For this I am looking for a solution that can work based on templates. What I have in my mind is a solution on lines of XSLT transformation that allows converting an XML to a desired output format (XML, HTML, Text) defined by the style sheet.
One option(or rather a workaround) to use XSLT is to convert JSON to XML that is:
input JSON -> XML -> transform -> output JSON
This approach would have a performance overhead of converting JSON to XML and this would become prominent as the size of incoming object increases.
I found a Node/client layer solution that transforms JSON based on the rules specified in a template. More details about can be found [here][1]. However, I was not able to find any solution that works for a java based application.
Any thoughts/help in terms of solution/frameworks to resolve this would be really helpful.
Thanks.
You could try JOLT, advertised as a JSON to JSON transformation library written in Java.
Or you can search this thread for other libraries and tools which can transform JSON.
The new XSLT 3.0 draft also includes support for JSON as input and output format. Saxon has already started an implementation and seems to support for the JSON part.
You could try JSLT, which is a transform language where you write the fixed part of the output in JSON syntax, then insert expressions to compute the values you want to insert in the template. It's quite similar to how XSLT and XPath work together.
It's implemented in Java on top of Jackson.
For simple transformations you can use jmom library.
For a complex transformation you can use template framework like freemarker.
And convert json data to Map/List form using json library so it can be used by template framework.
Related
I have a use-case where input data is in xml format. It contains multiple fields where we are interested in reading only few fields.
Based on the different use-case, separate velocity templates would have to written to convert xml to json data.
I could not find a better guide on how to write velocity template to convert XML to json. Can someone please help us how to write velocity for conversion from XML to JSON.
Thanks in advance!
First convert your XML into a DTO, and then DTO into Json. You should split your architecture in more than just one layer. The data access layer will handle the WS call and the controller will know how to answer the REST call. Velocity is just a template engine, not a converting tool. You should check Jackson or Gson.
My Java application takes XML input, and parses it using the simpleframework. I want it to accept JSON as well, therefore I want to convert the JSON to XML.
Tags and attributes are important, therefore I use the Badgerfish convention.
This works well in Python with xmljson, but I can't find a decent package to do this. GSON doesn't seem to have a Badgerfish implementation. This topic doesn't provide any tag/attribute retaining packages, the topic is a bit old as well.
Which Java packages can do the conversion from JSON to XML while putting tags/attributes at the right place?
Suggestions for alternative methods than Badgerfish are welcome as well...
Many thanks in advance!
You can use the XPath 3.1 json-to-xml() function, and then do an XSLT transformation on the generated XML to get it into the format you require.
I am trying to create HTML file from the result of an execution. The result is in the form of XML. There are few transformers that I can use to transform XML to HTML using XSLT file.
Other thing I will also have is the JAVA object of result which I can use for converting it to HTML.
Which of the above two approach is better and is there any API that I can use to convert java object to HTML other than XSLT or FILE I/O.
any one help?
I believe you have to go by xml (either directly or generated from your java object by jaxb).
In principle the templating frameworks (Velocity, Freemarker ...) can let you prepare a template into which you can inject your java object and render the response as you whish. But personally I think it will be easier/simple just to transform the xml that you already have
Background:
I'm calling web APIs that are in JSON format and passing them through
a data orchestration tool that needs them in XML format.
Orchestration tool allows custom Java procedures.
Problem:
JSON can contain elements that when converted to XML cause issues.
For example twitter handles #john: somevalue is fine for a key in JSON
but when converted to XML <#john>somevalue causes the
orchestration tool to throw errors.
I'm hitting a wide variety of web APIs that change often. I need to
be able to convert arbitrary JSON to XML with little to no maintenance.
Research so far:
I've found several ways to convert JSON to XML in Java but many of them are for fixed input structures.
This StackOverflow post seems like what I want but I'm having issues getting it to work and tracking down all of the JARs required.
I've seen some libraries will do some basic character escapes for &, <, >, ' and ". Is there one that is more robust?
I ended up deserializing the JSON and traversing the data by using the following regex to find the nodes and then remove or replace non latin characters.
Regex that grabs JSON node
"(.*?)":
I want to convert request xml to JSON string. which framework is better to use? jettison, jackson, json-org,... and also how can I do this?
Any idea?
thanks
Afsaneh
If the goal is to go straight from XML to JSON, without any structure transformations, data changes, or inspections, then XStream or even the JSON in Java reference implementation at org.json can get the job done rather simply. In similar fashion, XSLT options are available, including XSLTJSON and xml2json-xslt.
If complicated interrogation and/or manipulation of the data and resulting JSON are in order, then Jackson combined with the jackson-xml-databind extension provide for a feature-rich option that also has excellent performance. (Performance comparisons of some JSON and XML serialization APIs are available at https://github.com/eishay/jvm-serializers/wiki.)