流畅地从嵌套的JSONObject获取密钥

时间:2019-01-04 10:30:08

标签: java fluent-interface

我正在尝试从嵌套的JSONObject中提取一个值,例如“ id”。我使用的是org.json.simple软件包,我的代码如下:

JSONArray entries = (JSONArray) response.get("entries");
JSONObject entry = (JSONObject) entries.get(0);
JSONArray runs = (JSONArray) entry.get("runs");
JSONObject run = (JSONObject) runs.get(0);
String run_id = run.get("id").toString();

其中响应​​是一个JSONObject。

是否可以使用Fluent Interface Pattern重构代码,使代码更具可读性?例如,

String run_id = response.get("entries")
        .get(0)
        .get("runs")
        .get(0)
        .get("id").toString();

谢谢。

1 个答案:

答案 0 :(得分:3)

有可能。

bundler

您可以像这样使用它

class FluentJson {
    private Object value;

    public FluentJson(Object value) {
        this.value = value;
    }

    public FluentJson get(int index) throws JSONException {
        JSONArray a = (JSONArray) value;
        return new FluentJson(a.get(index));
    }

    public FluentJson get(String key) throws JSONException {
        JSONObject o = (JSONObject) value;
        return new FluentJson(o.get(key));
    }

    public String toString() {
        return value == null ? null : value.toString();
    }

    public Number toNumber() {
        return (Number) value;
    }
}