Skip to content
DataMiner DoJo

More results...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Search in posts
Search in pages
Search in posts
Search in pages
Log in
Menu
  • Blog
  • Questions
  • Learning
    • E-learning Courses
    • Open Classroom Training
    • Certification
      • DataMiner Fundamentals
      • DataMiner Configurator
      • DataMiner Automation
      • Scripts & Connectors Developer: HTTP Basics
      • Scripts & Connectors Developer: SNMP Basics
      • Visual Overview – Level 1
      • Verify a certificate
    • Tutorials
    • Video Library
    • Books We Like
    • >> Go to DataMiner Docs
  • Expert Center
    • Solutions & Use Cases
      • Solutions
      • Use Case Library
    • Markets & Industries
      • Media production
      • Government & defense
      • Content distribution
      • Service providers
      • Partners
      • OSS/BSS
    • DataMiner Insights
      • Security
      • Integration Studio
      • System Architecture
      • DataMiner Releases & Updates
      • DataMiner Apps
    • Agile
      • Agile Webspace
      • Everything Agile
        • The Agile Manifesto
        • Best Practices
        • Retro Recipes
      • Methodologies
        • The Scrum Framework
        • Kanban
        • Extreme Programming
      • Roles
        • The Product Owner
        • The Agile Coach
        • The Quality & UX Coach (QX)
    • DataMiner DevOps Professional Program
  • Downloads
  • More
    • Feature Suggestions
    • Climb the leaderboard!
    • Swag Shop
    • Contact
      • General Inquiries
      • DataMiner DevOps Support
      • Commercial Requests
    • Global Feedback Survey
  • PARTNERS
    • All Partners
    • Technology Partners
    • Strategic Partner Program
    • Deal Registration
  • >> Go to dataminer.services

QAction issue : Parse JSON array to table parameter

Solved690 views4th July 2023Array data JSON
1
Wade Press [DevOps Member]46 5th June 2023 0 Comments

Hello Dataminer team,

I'm having trouble to pass data from a array, derived from deserialised JSON, to a table. I've followed the example in the Dev Guide (How to handle XML and JSON data in QActions) however, like another user in the community, could not make it work. The data is being deserialized correctly however it's passing this to a table where I'm struggling. I've tried to follow some other examples in the online material without success. Are you able to assist please?

In this example I have a simple JSON array containing the metrics of a fan inside a device, here's a sample of the values from one fan.

[{"name": "Fan1A", "rawValue": "6480 RPM", "unit": "rpm", "speed": 6480.0}]

And, here's my QAction code.
-----------------------------------
using System;
using System.Collections.Generic;
using Skyline.DataMiner.Scripting;
using Newtonsoft.Json;

// <summary>
// The QAction entry point.
// </summary>
// <param name="protocol">Link with SLProtocol process.</param>

public static class QAction

{

public class rootObject
{
public string name { get; set; }
public string rawValue { get; set; }
public string unit { get; set; }
public float speed { get; set; }
}

public static void Run(SLProtocol protocol)
{
try
{

//get json string
string source = Convert.ToString(protocol.GetParameter(11));
//deserialise contents
List<rootObject> fansList = JsonConvert.DeserializeObject<List<rootObject>>(source);

int tableID = 1000;
List<string> names = new List<string>();
List<float> speeds = new List<float>();
List<object[]> rows = new List<object[]>();
int i;
for(i = 0; i < fansList.Count; i++)
{
object[] row = new object[2];
names.Add(fansList[i].name);
speeds.Add(fansList[i].speed);
//assign all columns here
rows.Add(row);
}
object[] tableContent = new object[] { names, speeds };
protocol.NotifyProtocol(193/*NT_FILL_ARRAY*/ , tableID, tableContent);

}
catch (Exception ex)
{
protocol.Log("QA" + protocol.QActionID + "|" + protocol.GetTriggerParameter() + "|Run|Exception thrown:" + Environment.NewLine + ex, LogType.Error, LogLevel.NoLogging);
}
}
}

Marieke Goethals [SLC] [DevOps Catalyst] Selected answer as best 4th July 2023

1 Answer

  • Active
  • Voted
  • Newest
  • Oldest
5
Thomas Cauwelier [SLC] [DevOps Advocate]1.50K Posted 5th June 2023 1 Comment

Hi Wade,

The FillArray call is very particular about the type of the columns.
The columns should always be an object[] instead of a List<T>.

You can rewrite the code to something like this:

//get json string
string source = Convert.ToString(protocol.GetParameter(11));
//deserialise contents
List<rootObject> fansList = JsonConvert.DeserializeObject<List<rootObject>>(source);

int tableID = 1000;
object[] nameColumn = new object[fansList.Count];
object[] speedColumn = new object[fansList.Count];

for (int i = 0; i < fansList.Count; i++)
{
    nameColumn[i] = fansList[i].name;
    speedColumn[i] = fansList[i].speed;
}

object[] columns = new object[] { nameColumn, speedColumn };
protocol.FillArray(tableID, columns);

I also recommend using the protocol.FillArray method instead of the NotifyProtocol to make the code a little bit more readable.

Marieke Goethals [SLC] [DevOps Catalyst] Selected answer as best 4th July 2023
Wade Press [DevOps Member] commented 5th June 2023

Hi Thomas, many thanks for your speedy and helpful reply. Thanks also for the explanation about the use of the FillArray, it’s much appreciated.

Please login to be able to comment or post an answer.

My DevOps rank

DevOps Members get more insights on their profile page.

My user earnings

0 Dojo credits

Spend your credits in our swag shop.

0 Reputation points

Boost your reputation, climb the leaderboard.

Promo banner DataMiner DevOps Professiona Program
DataMiner Integration Studio (DIS)
Empower Katas

Recent questions

Alarm Dashboard PDF/CSV Export 1 Answer | 0 Votes
Is the Microsoft SharePoint Connector Still Usable 0 Answers | 0 Votes
Is the Microsoft SharePoint Connector Still Usable 0 Answers | 0 Votes

Question Tags

adl2099 (115) alarm (62) Alarm Console (82) alarms (100) alarm template (83) Automation (223) automation scipt (111) Automation script (167) backup (71) Cassandra (180) Connector (108) Correlation (68) Cube (150) Dashboard (194) Dashboards (188) database (83) DataMiner Cube (57) DIS (81) DMS (71) DOM (139) driver (65) DVE (55) Elastic (83) Elasticsearch (115) elements (80) Failover (104) GQI (159) HTTP (76) IDP (74) LCA (151) low code app (166) low code apps (93) lowcodeapps (75) MySQL (53) protocol (203) QAction (83) security (88) services (51) SNMP (86) SRM (337) table (54) trending (87) upgrade (62) Visio (539) Visual Overview (345)
Privacy Policy • Terms & Conditions • Contact

© 2025 Skyline Communications. All rights reserved.

DOJO Q&A widget

Can't find what you need?

? Explore the Q&A DataMiner Docs

[ Placeholder content for popup link ] WordPress Download Manager - Best Download Management Plugin