使用DropWizard对动态模式进行JSON解析

时间:2015-12-18 11:11:47

标签: java json web-services jackson dropwizard

我需要使用动态模式解析JSON命中我们的API,我需要做出相应的响应。

动态架构就像,

{
"query": {
    <OPERATOR>: {
        <FIELD>: <VALUE>
    }
},
"fields" : [<FIELD_1>, <FIELD_2>, ...],
"from": 0,
"size": 10
}

OR

{
"query": {
    "and": [
        {
            <OPERATOR>: { 
                <FIELD>: <VALUE> 
            }
        },
        {
            <OPERATOR>: {
                    <FIELD>: <VALUE>
                }
        }
    ]
},
"fields" : [<FIELD_1>, <FIELD_2>, ...],
"from": 0,
"size": 10
}

我们的回复将基于以上JSON's。每个JSON类型的响应都不同。 我可以使用dropwizard的Jackson库来解析或者需要编写我自己的解析器是两难的。如果是,怎么样?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果你坚持使用我的代码然后告诉我,因为我没有时间来完善它。

String result = response.toString();
    Object mainResponse = null;
    try {
        mainResponse = new JSONTokener(result).nextValue();
        if (mainResponse instanceof JSONArray) {
            JSONArray json1 = new JSONArray(response.toString());
            Object value2 = json1.get(0);
            Object output = tryMethod((JSONObject) value2, searchString);
            outputtv.setText(output.toString());
            Log.i("Output", output.toString() + "");
        }
        if (mainResponse instanceof JSONObject) {
            JSONObject json = new JSONObject(response.toString());
            Object output1 = tryMethod(json, searchString);
            outputtv.setText(output1.toString());
            Log.i("Output", output1 + "");
        }

    } catch (JSONException e1) {
        e1.printStackTrace();
    }