cancel
Showing results forย 
Search instead forย 
Did you mean:ย 

Get Ouptviews for a custom snap

JiWon
New Contributor II

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.
image

Please share your ideas on how I can solve this error!

3 REPLIES 3

ptaylor
Employee
Employee

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);

JiWon
New Contributor II

Hi ptaylor,

Thanks for being a big help! It works

DharaSP
New Contributor

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!