By looking at the queue item, it is clear that the disptacher has serialized a datatable into json string as value for in_Licenses key in your queue data.
There is a better way to get all of the key-value pairs in_Licenses in one go instead of getting ID, AppName, Start_Data, End_Date, Quantity separately. I assume here that the number of items in the json array (length of array) will be dynamic.
Approach
Ensure you have the UiPath.Web.Activities package. This package allows you to parse xml and json strings by deseralizing them. In your dispatcher this same package has searialized a datatable into json string.
Your queue item specific content is in_Licenses so use an Assign Activity and create a new DataTable variable LicensesDataTable LicensesDataTable= Newtonsoft.Json.JsonConvert.DeserializeObject(Of DataTable)(out_TransactionItem.SpecificContent("in_Licenses").ToString)
Step two will output a datatable with the following structure
ID
AppName
Start_Date
End_Date
Quantity
175
Connect for Salesforce
08/31/2021
09/01/2023
1
176
Connect 2.0 for Microsoft One
08/31/2021
09/01/2023
1
You can either use a For Each Row —> Row in LicensesDataTable and get values either in a for loop or if you fancy some linq queries you can use them.
If you still want grab values from a datatable column then you can use LicensesDataTable.Rows(INDEX (integer)).Item("COLUMNNAME" (string)).ToString
For example:
First row (Index 0) LicensesDataTable.Rows(0).Item("AppName").ToString will return Connect for Salesforce
Second row (Index 1) LicensesDataTable.Rows(1).Item("Start_Date").ToString will return 08/31/2021
You get the drill here
There are no performance issues in this method so you should be fine processing in_Licenses containing upto 5000 rows (if necessary). If the row count reaches higher than this a linq query is far superior in terms of execution time.