std.json—检查JSONValue是否具有特定字段的任何方法

std.json—检查JSONValue是否具有特定字段的任何方法,json,d,phobos,Json,D,Phobos,假设我有一个未知的JSON位,我想检查它是否有类似的形式: { "foo": stuff "bar": stuff } 其中stuff是任何东西-整数、对象或任何东西。如果我这样做: auto json = parseJSON("{}"); auto foo = json["foo"]; 我会得到一个错误。是否有任何方法可以优雅地处理此问题(返回null、抛出异常、segfault以外的任何内容)?只需使用中的D操作符,就像使用D关联数组一样: auto foo = "foo

假设我有一个未知的JSON位,我想检查它是否有类似的形式:

{
    "foo": stuff
    "bar": stuff
}
其中
stuff
是任何东西-整数、对象或任何东西。如果我这样做:

auto json = parseJSON("{}");
auto foo = json["foo"];

我会得到一个错误。是否有任何方法可以优雅地处理此问题(返回null、抛出异常、segfault以外的任何内容)?

只需使用中的D
操作符,就像使用D关联数组一样:

auto foo = "foo" in json ? json["foo"].str : null;
如果您使用的是DMD2.065或更早版本,则需要为
in
操作符使用
json.object

auto foo = "foo" in json.object ? json["foo"].str : null;

只需在
操作符中使用D
,就像使用D关联数组一样:

auto foo = "foo" in json ? json["foo"].str : null;
如果您使用的是DMD2.065或更早版本,则需要为
in
操作符使用
json.object

auto foo = "foo" in json.object ? json["foo"].str : null;

只需在
操作符中使用D
,就像使用D关联数组一样:

auto foo = "foo" in json ? json["foo"].str : null;
如果您使用的是DMD2.065或更早版本,则需要为
in
操作符使用
json.object

auto foo = "foo" in json.object ? json["foo"].str : null;

只需在
操作符中使用D
,就像使用D关联数组一样:

auto foo = "foo" in json ? json["foo"].str : null;
如果您使用的是DMD2.065或更早版本,则需要为
in
操作符使用
json.object

auto foo = "foo" in json.object ? json["foo"].str : null;

我的编译器不太喜欢这一点-这一行会产生错误
in expression的rvalue必须是关联数组,而不是JSONValue
。那么试试json.object中的
“foo”。这样就行了,谢谢!请你修改一下你的答案,这样其他人就不会犯我的错误了
json.object
仅适用于DMD 2.065或更高版本。我的编译器不太喜欢这一点-这一行会产生错误
in expression的右值必须是关联数组,而不是JSONValue
。那么试试json.object
中的
“foo”。这样就行了,谢谢!请你修改一下你的答案,这样其他人就不会犯我的错误了
json.object
仅适用于DMD 2.065或更高版本。我的编译器不太喜欢这一点-这一行会产生错误
in expression的右值必须是关联数组,而不是JSONValue
。那么试试json.object
中的
“foo”。这样就行了,谢谢!请你修改一下你的答案,这样其他人就不会犯我的错误了
json.object
仅适用于DMD 2.065或更高版本。我的编译器不太喜欢这一点-这一行会产生错误
in expression的右值必须是关联数组,而不是JSONValue
。那么试试json.object
中的
“foo”。这样就行了,谢谢!请你修改一下你的答案,这样其他人就不会犯我的错误了
json.object
仅适用于DMD2.065或更早版本。