Skip to main content
5-Regular Member
Mar 27, 2017 6:13 AM UTC

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

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
Aug 31, 2016 9:19 AM UTC

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?

Translate
1-Visitor
Aug 31, 2016 9:21 AM UTC

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.

Translate
1-Visitor
Sep 1, 2016 8:33 AM UTC

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.

Translate
13-Aquamarine
May 16, 2022 10:08 PM UTC

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. 

Translate