无法从 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;
在对端点发出 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;