Community Tip - Want the oppurtunity to discuss enhancements to PTC products? Join a working group! X
Hi all,
I am making a GET API call from a ThingWorx service. I want to parse the JSON data from the API call and search through it for certain values, which will then be pushed into an array. It seems to me that standard JavaScript methods like .filter() and .find() don't work in ThingWorx.
Can this be done in the same service or will I need multiple?
Any help would be appreciated.
Solved! Go to Solution.
Hello,
You can find some information here.
Thingworx does support arrow functions, so if you are comfortable using those you can go ahead with that.
If your data looks similar to this:
{array:[
{key:value},{key:value},{key:value},{key:value}
]}
Then you can use the forEach() function to loop through the objects in your array, something like this:
array.forEach(object => {
// do your filtering here and array push here
});
Hope this helps,
Regards,
Jens
Hello,
You can find some information here.
Thingworx does support arrow functions, so if you are comfortable using those you can go ahead with that.
If your data looks similar to this:
{array:[
{key:value},{key:value},{key:value},{key:value}
]}
Then you can use the forEach() function to loop through the objects in your array, something like this:
array.forEach(object => {
// do your filtering here and array push here
});
Hope this helps,
Regards,
Jens
Hello,
Services like find and filter work in ThingWorx, including ContentLoaderFunctions calls. This example works for me:
let json = Resources["ContentLoaderFunctions"].GetJSON({
url: 'https://datausa.io/api/data?drilldowns=Nation&measures=Population'
});
let result = { // JSON
'filtered': json.data.filter(row => (row['ID Year'] < 2015))
};
The only related non-intuitive thing I know is that ThingWorx doesn't allow plain arrays as JSON objects and will always wrap them in "array" element, i.e.:
// Service return type is JSON
let result = [1, 2, 3]; // Will actually return {"array": [1, 2, 3]}
/ Constantine
Hello Constantine,
Whenever I try and run a service that uses .filter(), I receive this error:
Error executing service Get_IR_APIs. Message :: TypeError: Cannot call method "filter" of undefined - See Script Error Log for more details.
It is also worth mentioning, while searching for the JSON objects in the array of JSON objects, I want to search for values using the value part, of the key and value pair structure.
Thank you
Can you share the complete piece of code which doesn't work?