无法从 NavJsonValue 转换为 NavDate

Unable to convert from NavJsonValue to NavDate

在对端点发出 Get-Request 后,我​​逐键解析返回的 Json 字符串,这很有效。当我尝试将返回的日期 ('createdAt') 转换为日期类型时出现问题。

我收到的错误

Die Konvertierung von Microsoft.Dynamics.Nav.Runtime.NavJsonValue in Microsoft.Dynamics.Nav.Runtime.NavDate ist nicht möglich.

翻译成这样的:

Unable to convert from NavJsonValue to NavDate

Json我解析

{

    "entryNo": "2",

    "title": "TEST",

    "description": "Test Item",

    "websiteUrl": "Test Url",

    "createdAt": "14.01.2021"

}

相关代码

_testEntry.CreatedAt := GetJsonToken(jsonObject, 'createdAt').AsValue().AsDate();

local procedure GetJsonToken(jsonObject: JsonObject; tokenKey: Text) jsonToken: JsonToken;
begin
    if not jsonObject.Get(tokenKey, jsonToken) then
        exit;
end;

返回的日期格式不是有效的 JavaScript 格式,这正是 AsDate() 所期望的格式。

如果您控制端点,则应将日期格式更改为 YYYY-MM-DD

如果您无法控制端点,则需要解析日期值:

local procedure ParseDate(Token: JsonToken): Date
var
    DateParts: List of [Text];
    Year: Integer;
    Month: Integer;
    Day: Integer;
begin
    // Error handling omitted from example
    DateParts := Token.AsValue().AsText().Split('.');
    Evaluate(Day, DateParts.Get(1));
    Evaluate(Month, DateParts.Get(2));
    Evaluate(Year, DateParts.Get(3));
    exit(DMY2Date(Day, Month, Year));
end;