【问题标题】:std.json - Any way to check if a JSONValue has a particular fieldstd.json - 检查 JSONValue 是否具有特定字段的任何方法
【发布时间】:2014-11-18 01:37:19
【问题描述】:

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

{
    "foo": stuff
    "bar": stuff
}

stuff 是任何东西——整数、对象等等。如果我这样做:

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

我会遇到段错误。有什么方法可以优雅地处理这个问题(返回 null、抛出异常、任何东西除了段错误)?

【问题讨论】:

    标签: json d phobos


    【解决方案1】:

    只需使用 D in 运算符,就像使用 D 关联数组一样:

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

    如果您使用的是 DMD 2.065 或更早版本,则需要将 json.object 用于 in 运算符:

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

    【讨论】:

    • 我的编译器不太喜欢这样 - 该行会产生错误 rvalue of in expression must be an associative array, not JSONValue。
    • 然后试试"foo" in json.object。
    • 成功了,谢谢!您能否编辑您的答案,以免其他人犯我的错误?
    • 完成。 json.object 仅适用于 DMD 2.065 或更早版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 2012-12-13
    • 2016-07-10
    • 1970-01-01
    • 2014-12-09
    • 2015-09-03
    相关资源
    最近更新 更多