从HttpServlet中的请求参数解析JSON

时间:2013-02-26 07:19:36

标签: java json parsing

我需要实现一个解析器来解析“JSON字符串”中的一些值。可以从请求参数访问数据,如下所示:

  

String [] criterion = 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.

你将如何实现解析器?

2 个答案:

答案 0 :(得分:2)

您应该查看JSON in Java

还有另一个名为google-gson的功能,它提供了定义用于自定义类型的序列化和反序列化的类型适配器的功能。您可以找到用例here

答案 1 :(得分:1)

您可以使用任何可用的无数Json库轻松地将String解析为Java中的Object。 我最喜欢的是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 + "]";
        }



    }

}