簡體   English   中英

從HttpServlet中的請求參數解析JSON

[英]Parsing JSON from request parameters in a HttpServlet

我需要實現一個解析器,用於解析“ JSON字符串”中的某些值。 可以從請求參數訪問數據,如下所示:

String []條件= request.getParameterValues(“ criteria”);

條件包含以下字符串(每行代表一個字符串):

{"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.

您將如何實現解析器?

您應該看看JSON in Java中的JSON in Java

還有一個名為google-gson ,它提供了一些功能,例如定義用於串行化的類型適配器和用於自定義類型的反序列化。 您可以在此處找到用例。

好了,您可以使用無數個可用的Json庫輕松地將String解析為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 + "]";
        }



    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM