0

「JSON 文字列」からいくつかの値を解析するパーサーを実装する必要があります。データは、次のようにリクエスト パラメータからアクセスできます。

String[] 基準 = request.getParameterValues("基準");

条件には次の文字列が含まれます (各行は文字列を表します)。

{"fieldName":"name","operator":"iContains","value":"a string"}
{"fieldName":"date","operator":"equals","value":"2013-02-26"}
{"fieldName":"amount","operator":"equals","value":2600}

fieldName によって基準から値を取得できる必要があります。API は次のようになります。

String name = CoolParserUtil.parseParam(criterion, "name", String.class);
// "a string"
Date date = CoolParserUtil.parseParam(criterion, "date", Date.class);
// date representing 2013-02-26
// etc. etc.

パーサーをどのように実装しますか?

4

2 に答える 2

2

をご覧くださいJSON in Java

google-gsonカスタムタイプのシリアル化および逆シリアル化のためのタイプアダプタの定義などの機能を提供する名前付きの別のものがあります。ここでユースケースを見つけることができます。

于 2013-02-26T07:24:50.073 に答える
1

利用可能な無数のJsonライブラリのいずれかを使用して、Javaで文字列をオブジェクトに簡単に解析できます。私のお気に入りはgoogle-gson です

これは、Google jsonで行う方法です

import com.google.gson.Gson;
public class GsonTutorial {

    public static void main(String[] args) {

String jsonMsg ="{\"fieldName\":\"name\",\"operator\":\"iContains\",\"value\":\"a string\"}";

        Gson gson = new Gson();
        Data data = (Data) gson.fromJson(jsonMsg, Data.class);

        System.out.println(data);
    }

    class Data{
        private String fieldName;
        private String operator;
        private String value;
        public String getFieldName() {
            return fieldName;
        }
        public void setFieldName(String fieldName) {
            this.fieldName = fieldName;
        }
        public String getOperator() {
            return operator;
        }
        public void setOperator(String operator) {
            this.operator = operator;
        }
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
        public String toString() {
            return "Data [fieldName=" + fieldName + ", operator=" + operator
                    + ", value=" + value + "]";
        }



    }

}
于 2013-02-26T07:52:26.873 に答える