Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
How can I return JSON from my tJavaRow component? The code (shown below) shows that I'm creating the desired JSON, but I don't know how to pass it along as the output of the component. I see that I can use the Talend Document type as schema output, but the Java JSON type is not compatible. Is there a Talend type that is? Or is there a Type that I can cast to? My end goal is to be able to return the JSON to the client (via RESTResponse)
Thanks!
InputStream is = (InputStream)globalMap.get("tFileFetch_1_INPUT_STREAM");
Reader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
JSONArray items = new JSONArray();
int KEEP_EMPTY_STRINGS = -1;
String[] headers = null;
String line;
String delimiter = "\\|";
// iterate over file contents
while ((line = br.readLine()) != null) {
JSONObject item = new JSONObject();
// gank the headers and move on
if (headers == null) {
headers = line.split(delimiter, KEEP_EMPTY_STRINGS);
continue;
}
// build JSON
String[] data = line.split(delimiter, KEEP_EMPTY_STRINGS);
for(int i = 0; i < headers.length; i++) {
item.put(headers[i], data[i].trim());
}
items.add(item);
}
// How can I return the JSON to the output_row so that the next component can work with the JSON?
I was able to resolve this by simply setting the tJavaRow components output schema to string and using toString() on the java JSON object. I then passed the string output directly to the RESTResponse which in turn responds with JSON.
output_row.body = items.toString();
I was able to resolve this by simply setting the tJavaRow components output schema to string and using toString() on the java JSON object. I then passed the string output directly to the RESTResponse which in turn responds with JSON.
output_row.body = items.toString();