我真的很喜欢 mORMot / Synopse 实现 JSON 处理的方式,尤其是您可以在代码中使用 JSON 元素的方式(如MyString := myjson.name
)。这在包装只有一个变体(JSON)的对象时非常直观和有用,我们通过 getter/setter 访问状态,如下所示:
TMyObject = class
private
FState: Variant;
function GetName: String;
public
constructor Create(AJson: Variant);
property Name: String read GetName;
end;
function TMyObject.GetName: String;
begin
Result := FState.name;
end;
它真的很强大,但是如果在相应的 JSON 文档中找不到元素,我想获取“默认”变体值(因此,如果“名称”不存在,上面的示例应该返回一个空字符串)。
我不想使用NullStrictConvert
,因为这不是线程安全的并且会影响我们程序的其余部分。当然我可以检查VarIsNull(FState.name)
,但是我必须对每个元素都这样做,而且我不希望有这个额外的样板。
有什么建议么?