how to check nested json is exits/not?

julkifli33julkifli33 Member Posts: 1,092
hi all ,
how do we check nested json exist or not exist?

this one is not nested is ok.
IF JsonObject.Contains('item') = false THEN
.....................
else
......................

but how about if we want to check fractionAmount?
[
    {
        "id": "630",
        "item": "Item001",
        "affectedAmounts": {
            "fractionAmount": 0
        }
        "fees": []
    }
]

Thanks.

Answers

  • ftorneroftornero Member Posts: 524
    Hello @julkifli33,

    You could do something like this:
    if jsObj.SelectToken('affectedAmounts.fractionAmount', jsToken) then
    ..........
    

    Regards
  • julkifli33julkifli33 Member Posts: 1,092
    edited 2022-01-19
    Hi @ftornero

    I tested this one error if not exist
    Amount := SelectJsonToken(JsonObject,$.foreignAmount.amount).AsValue.AsDecimal()
    

    so i just add like this
    IF JsonObject.Contains('foreignAmount') = true THEN 
    begin
    Amount := SelectJsonToken(JsonObject,$.foreignAmount.amount).AsValue.AsDecimal();
    end;
    
  • julkifli33julkifli33 Member Posts: 1,092
    edited 2023-01-30
    Hi all.
    i want to get this nested json value (BalanceTypeCode Value)
    {
        "AccountNumber": "************",
        "AccountCurrency": "USD",
        "AvailableBal": [
            {
              "BalanceTypeCode": "OPBD",
       "AmountValue": 3534559.9,
      "AmountCcy": "USD",
                "CreditOrDebit": "CRDT",
                "Date": "2023-01-30"
            },
            {
                "BalanceTypeCode": "CLAV",
                "AmountValue": 3133816.3,
                "AmountCcy": "SGD",
                "CreditOrDebit": "CRDT",
                "Date": "2023-01-13"
            },
       ..................
       ]
    }
    


    my code
    for i := 0 to JsonArray.Count - 1 do begin
    JsonArray.get(i, JsonToken);
    JsonObject := JsonToken.AsObject();

    RetValue := GetJsonToken(JsonObject, '$.AvailableBal.BalanceTypeCode').AsValue.AsText();
    end;

    but it failed
    Unable to convert from Microsoft.Dynamics.Nav.Runtime.NavJsonValue to Microsoft.Dynamics.Nav.Runtime.NavText.
Sign In or Register to comment.