Skip to main content
5-Regular Member
March 27, 2017

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

  • March 27, 2017
  • 4 replies
  • 13346 views

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

}

4 replies

1-Visitor
August 31, 2016

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?

1-Visitor
August 31, 2016

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.

1-Visitor
September 1, 2016

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.

13-Aquamarine
May 16, 2022

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.