Hello every,
Trying to consume a json file like this:
{
"salesinvoiceno": "PS-INV103196",
"value": [
{
"profileid": "1896-S",
"desc": "ATHENS Desk"
},
{
"profileid": "1936-S",
"desc": "BERLIN Guest Chair, yellow"
},
{
"profileid": "1972-S",
"desc": "MUNICH Swivel Chair, yellow"
},
{
"profileid": "1996-S",
"desc": "ATLANTA Whiteboard, base"
}
}
Have used some approach to get the object of "value "array but unable to get then object in repeat. Kindly guide to achieve the objects in "value" array to loop through. .
JToken.ReadFrom(JsonText);
JToken.SelectToken('value', JsonToken1);
JArray := JsonToken1.AsArray();
for i := 0 to JArray.Count do begin
JArray.Get(i, JToken1);
Jobject := JToken1.AsObject();
codeunit 50107 SalesInvoicejSON1
{
TableNo = 112;
Permissions = tabledata 112 = rim;
procedure InsertPostedOpportunity(SinvNo: Code[20])
var
JToken: JsonToken;
JArray: JsonArray;
JValue: JsonValue;
Jobject: JsonObject;
JsonObject1: JsonObject;
JsonToken1: JsonToken;
JToken1: JsonToken;
i: Integer;
begin
Clearall();
Clear(JsonText);
GenerateJsonPosted(SInvNo);
Message(JsonText);
JToken.ReadFrom(JsonText);
JToken.SelectToken('value', JsonToken1);
JArray := JsonToken1.AsArray();
for i := 0 to JArray.Count do begin
JArray.Get(i, JToken1);
Jobject := JToken1.AsObject();
end;
end;
local procedure ValidateJsonToken(JsonObject: JsonObject; TokenKey: text) JsonToken: JsonToken
begin
if not JsonObject.Get(TokenKey, JsonToken) then
Error('Could not find token with key: %1', TokenKey);
end;
[TryFunction]
procedure InsertOpportunity(SInvNo: Code[20])
var
myInt: Integer;
begin
InsertPostedOpportunity(SInvNo);
end;
local procedure GenerateJsonPosted(SINNo: Code[20])
var
JObject: JsonObject;
Jarray: JsonArray;
JBranch: JsonObject;
JLineObj: JsonObject;
SILine: Record "Sales Invoice Line";
SIHeader: Record "Sales Invoice Header";
cUSTOMER: Record Customer;
begin
Clear(Jobject);
Clear(JArray);
Clear(JBranch);
Clear(JLineObj);
Clear(JsonText);
SIHeader.Reset();
SIHeader.SetRange("No.", SINNo);
if SIHeader.FindFirst() then begin
SIHeader.CalcFields("Amount Including VAT");
Jobject.Add('salesinvoiceno', SIHeader."No.");
SILine.Reset();
SILine.SetRange("Document No.", SIHeader."No.");
SILine.SetFilter("No.", '<>%1', '');
SILine.FindSet();
//Line Details --Start
JLineObj.Add('profileid', '');
JLineObj.Add('desc', '');
repeat
JLineObj.Replace('profileid', SILine."No.");
JLineObj.Replace('desc', SILine.Description);
JArray.Add(JLineObj.Clone());
//Line Details -------End
until SILine.Next() = 0;
//Creating Json ---Start
Jobject.Add('value', JArray);
Jobject.WriteTo(JsonText);
//Creating Json --END
end;
end;
var
JsonText: Text;
}
// Welcome to your new AL extension.
// Remember that object names and IDs should be unique across all extensions.
// AL snippets start with t*, like tpageext - give them a try and happy coding!
pageextension 50100 CustomerListExt extends "Posted Sales Invoices"
{
actions
{
addafter(Navigate)
{
action(ConsumeJson)
{
Caption = 'Consume Json';
Promoted = true;
PromotedOnly = true;
PromotedCategory = Process;
ApplicationArea = all;
PromotedIsBig = true;
ToolTip = 'Consume Json';
trigger OnAction()
var
Cu: Codeunit 50107;
begin
Cu.InsertPostedOpportunity(Rec."No.");
end;
}
}
}
}