Java 如何将对象作为字符串存储在rest webservice的字符串参数中
我使用的是RESTWebService,我可以在webservice中有一个灵活的字符串参数,它可以接受任何存储为字符串的对象 例如,我有一个示例RequestJson:Java 如何将对象作为字符串存储在rest webservice的字符串参数中,java,json,web-services,rest,Java,Json,Web Services,Rest,我使用的是RESTWebService,我可以在webservice中有一个灵活的字符串参数,它可以接受任何存储为字符串的对象 例如,我有一个示例RequestJson: public class RequestJSON { String username; String password; String data; } 在数据参数中,我想接受任何json对象 @Path("/rest") public class RESTWebservice { @POST
public class RequestJSON {
String username;
String password;
String 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());
}
}
如何使webservice接受在请求json的数据参数中发送的任何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;
}
}
}
}
import java.util.List;
公共班机{
枚举数据类型{
一串
浮动
整数
BOOLEAN;//可以添加列表,但由于必须使用分隔符,因此会变得很糟糕
}
数据集合类{
列出数据;
}
类数据{
字符串名;
DATATYPE DATATYPE;//表单应通知数据类型
字符串数据;
公共数据(字符串名称、数据类型、数据类型、字符串数据){
this.name=名称;
this.datatype=数据类型;
这个数据=数据;
}
公共对象转换(){
交换机(数据类型){
大小写布尔值:
返回Boolean.parseBoolean(数据);
案例浮动:
返回Float.parseFloat(数据);
大小写整数:
返回整数.parseInt(数据);
大小写字符串:
返回数据;
违约:
返回null;
}
}
}
}
但这并不漂亮。你可以让它不那么难看,但是,它总是难看的。你是否在参数声明之前尝试了<代码> @请求正文< /代码>注释:<代码> @ RequestBody RequestJSON requestJson <代码>。是否有一些与当前实现不一致的问题?如果您想做任何有用的操作,您可能需要考虑使它成为<代码> map < /代码>。数据不过,您需要对结构有一些了解,才能正确地遍历地图。不同的值将为
对象
值生成不同的类型。@克里斯托弗@RequestBody
属于Spring,我错了吗?OP似乎使用JAX-WS。@sp00m抱歉。我脑子里有太多的框架在游动!