繁体   English   中英

如何将对象以字符串形式存储在其余Web服务的字符串参数中

[英]How to have an object stored as a string in a string parameter of a rest webservice

我正在使用REST Web服务,我可以在Web服务中使用一个灵活的字符串参数,该参数可以接受存储为字符串的任何对象。

例如我有这个示例RequestJson:

public class RequestJSON {
    String username;
    String password;
    String data;
}

在data参数中,我要接受任何json对象,

@Path("/rest")
public class RESTWebservice {
    @POST
    @Path("/request")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public ResponseJSON sampleWeb(RequestJSON requestJson) {
        logger.info(requestJson.toString());
    }
}

我们如何使Web服务接受请求Json的data参数中要发送的任何json:

例如这样:

{
"username":"abc",
"password":"xyz",
"data":{"number":"4","input":"","msg":{"msgArr":["hello","test"]}},
}

有可能吗?

是的,有可能:

import java.util.List;

public class Main {

    enum DATATYPE {
        STRING,
        FLOAT,
        INTEGER,
        BOOLEAN; // could add lists but then it gets nasty because you have to have a delimiter
    }

    class ColectionOfData {
        List<DATA> data;
    }

    class DATA  { 
        String name;
        DATATYPE datatype; // form should inform of the data type
        String data;

        public DATA(String name, DATATYPE datatype, String data) {
            this.name = name;
            this.datatype = datatype;
            this.data = data;
        }

        public Object convert() {
            switch(datatype) {
            case BOOLEAN:
                return Boolean.parseBoolean(data);
            case FLOAT:
                return Float.parseFloat(data);
            case INTEGER:
                return Integer.parseInt(data);
            case STRING:
                return data;
            default:
                return null;
            }
        }
    }

}

但这并不漂亮。 您可以减少它的丑陋程度,但它始终是丑陋的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM