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 回答