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

Parse JSON Response QAction

Solved1.13K views15th November 2022C++ HTTP QActions
3
Ross Elliott [DevOps Advocate]819 14th November 2022 1 Comment

Hi,

I'm following the example on how to handle JSON responses in QActions but have got stuck when passing the data to a paramID. I have the connector with my JSON response being passed to param 22. I then want to add the data to rows in table 2200. I'm using JsonConvert.DeserializeObject to deserialise to a root object. The trouble I have is how to get each row in the table populated by the deserialised JSON. In the example there's a using statement in the QAction that refers to another QAction but it isn't explained what the other QAction is doing so I'm not sure how to use it in my example. There's also a method calling xxxQActionRow which then isn't working.

I've generated the classes using the paste special feature in Visual Studio, I just am stuck with the foreach command getting the data to the table parameter.

My QAction is as follows;

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;

using Skyline.DataMiner.Scripting;
using Newtonsoft.Json;

/// <summary>
/// DataMiner QAction Class: deserialise.
/// </summary>
public static class QAction
{
public class Rootobject
{
//public int count { get; set; }
public Port[] Ports { get; set; }
}

public class Port
{
public string ifname { get; set; }
public string ip { get; set; }
public string name { get; set; }
public int id { get; set; }
public string mac { get; set; }
}
/// <summary>
/// The QAction entry point.
/// </summary>
/// <param name="protocol">Link with SLProtocol process.</param>
public static void Run(SLProtocol protocol)
{
try
{
//get json string
string source = Convert.ToString(protocol.GetParameter(Parameter.responsecontent_22));
//deserialise contents
Rootobject rootObject = JsonConvert.DeserializeObject<Rootobject>(source);
List<object[]> portsList = new List<object[]>();
//convert classes into rows
//rootObject.count = responseCount;
foreach (Port port in rootObject.Ports)
{
//portsList.Add(new PortQActionRow)
//string interfaceName = port.ifname;
//engine.generateInformation(interfaceName);
//protocol.SetParameter(Parameter.responsecount_23)

}

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

}

Ross Elliott [DevOps Advocate] Selected answer as best 15th November 2022
Ross Elliott [DevOps Advocate] commented 15th November 2022

Hi, I’ve been doing some testing outside of the QAction in an automation script. The output of the below is an info event for each instance of ifName, name, mac etc of the table Ports. So it’s working as expected. All I need is the method to get the data values into the parameters of my table.
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using Skyline.DataMiner.Automation;
//using Skyline.DataMiner.Scripting;
using Newtonsoft.Json;

public class Rootobject
{
public int count { get; set; }
public Port[] ports { get; set; }
}

public class Port
{
public string ifname { get; set; }
public string ip { get; set; }
public string name { get; set; }
public int id { get; set; }
public string mac { get; set; }
}

public class Script
{
public void Run(Engine engine)
{
Element chassis = engine.FindElement(“RossTest”);
string source = Convert.ToString(chassis.GetParameter(22));

Rootobject rootobject = JsonConvert.DeserializeObject(source);
foreach (Port port in rootobject.ports)
{
engine.GenerateInformation(port.ifname);
engine.GenerateInformation(port.ip);
engine.GenerateInformation(port.name);
engine.GenerateInformation(port.mac);
//engine.GenerateInformation(port.id);
};

//protcol

}
}

1 Answer

  • Active
  • Voted
  • Newest
  • Oldest
2
Michiel Vanthuyne [SLC] [DevOps Enabler]4.10K Posted 15th November 2022 1 Comment

Hi Ross,

you could do something like this:

List<object[]> rows = new List<object[]>();
foreach(Port port in rootobject.ports)
{
object[] row = new object[5];
row[0] = port.ifname;
//assign all columns here
rows.Add(row);
}
protocol.FillArray(tablePid, rows, NotifyProtocol.SaveOption.Partial);

Ross Elliott [DevOps Advocate] Selected answer as best 15th November 2022
Ross Elliott [DevOps Advocate] commented 15th November 2022

Perfect – Thanks a lot, very 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

Web Applications exception in Cube due to invalid certificate 0 Answers | 0 Votes
Redundancy Groups and Alarming – Duplicate Alarms 0 Answers | 0 Votes
Correlation Engine: “Test rule” doesn’t result in a hit, despite functional rule 1 Answer | 3 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 (109) Correlation (69) Correlation rule (52) Cube (151) Dashboard (194) Dashboards (188) database (83) DataMiner Cube (57) DIS (81) DMS (71) DOM (140) driver (65) DVE (56) Elastic (83) Elasticsearch (115) elements (80) Failover (104) GQI (159) HTTP (76) IDP (74) LCA (152) low code app (166) low code apps (93) lowcodeapps (75) MySQL (53) protocol (203) QAction (83) security (88) 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