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

Community Tip - Did you know you can set a signature that will be added to all your posts? Set it here! X

How to convert a "Json input" to an "Infotable" in a ThingWorx service

100% helpful (1/1)

1. Add an Json parameter

  • Example:

{
​    "rows":[
        {
            "email":"example1@ptc.com"
        },
        {
            "name":"Qaqa",
            "email":"example2@ptc.com"
        }
    ]
}

2. Create an Infotable with a DataShape usingCreateInfoTableFromDataShape(params)

3. Using a for loop, iterate through each Json object and add it to the Infotable usingInfoTableName.AddRow(YourRowObjectHere)

  • Example:

var params = {
    infoTableName: "InfoTable",
    dataShapeName : "jsontest"
};

var infotabletest = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);

for(var i=0; i<json.rows.length; i++) {
    infotabletest.AddRow({name:json.rows.name,email:json.rows.email});

}

Comments

In the snippets collections there is a set of functions under "InfoTableFunctions".

According to the tooltip, the "FromJSON" function should create an infotable out of a JSON input.

Did anyone get that to work?

Hi Erik,

To use it, JSON input should be on TW specific Infotable JSON format. If you don't have the JSON on TW Infotable JSON format, better you go parsing the JSON, and adding it's contents to the InfoTable through AddRow method.

Carles.

Thanks for the quick reply, this worked fine!


It would be nice with ready made snippets to automatically create a data shape and infotable when interacting with external REST APIs.

Found a dynamic way of addning my JSON data to an infotable that might help someone else.

/*
 * Input: jsonInput (JSON) 
 */
let result = Resources["InfoTableFunctions"].CreateInfoTable();
for(let i=0; i<jsonInput.value.length; i++){
  //Get object
  let json = jsonInput.value[i];
  
  //Adding fields for all attributes
  let keys = Object.keys(json);
  for (let i = 0; i < keys.length; i++) {
   result.AddField({ name: keys[i], baseType: 'STRING' });
  }

  //Example of manipulated values
  json.Mashup = "MashupObject" + json.ObjectType.replace(" ", "");
  json.Url = baseUrl + "/app/#ptc1/tcomp/infoPage?oid=" + 
  json.ID.replace(/:/g, '%3A');

  //Adding object
  result.AddRow(json);
}

 Keywords: ThingWorx JSON to Infotable. 

Version history
Last update:
‎Mar 27, 2017 02:13 AM
Updated by:
Labels (2)