06-07-2020 09:08 AM
Hi Experts,
I am developing a custom snap which connects to a Mapper. In process(Document document, String s), I get data from the Mapper and then I convert this map data to JSON object by:
Map<String, Object> inputDataFromMapper = document.get(Map.class);.
JSONObject inputDataJsonObj = new JSONObject(inputDataFromMapper);
And now I want to show this JSON object as the outputview of my custom snap by:
Document data = documentUtility.newDocument(documentUtility.newDocument(inputDataJsonObj), document);
outputViews.write(documentUtility.newDocumentFor(document, data));
However, I am getting this error in my custom snap after validating the pipeline.
Please share your ideas on how I can solve this error!
06-08-2020 12:53 PM
Hi JiWon,
There’s no need to use the JSONObject class or anything similar to convert the map data to JSON. In the Snap API, the data structures associated with input and output documents aren’t JSON; they are just Java objects like Map, List, and primitives (String, Integer, etc). These data structures can be easily mapped to JSON but you don’t need to use any sort of JSON-specific API to read or write them.
Try something like this instead:
Document outputDoc = documentUtility.newDocumentFor(document, inputDataFromMapper);
outputViews.write(outputDoc);
06-18-2020 03:18 AM
Hi ptaylor,
Thanks for being a big help! It works
05-07-2021 09:00 AM
I am developing a custom SNAP that makes HTTP request and gets JSON response in return. The response is array of objects. In order to right it to document , currently it only shows up if I convert the response to string in following manner:
Map<String, Object> data = new LinkedHashMap<>();
data.put(“Response”, response);
outputViews.write(documentUtility.newDocumentFor(document, data));
But I’d like to instead preview the response in standard json format. Any idea how this can be achieved ? Any help would be appreciated . Thank you!