[英]How to invoke a REST call (POST with JSON body) from Camel in Java DSL
[英]Converting arbitrary JSON from POST body to a map JAVA REST
我目前正在使用REST Web服务。 方法之一是POST请求,其中用户以JSON格式发送一些配置详细信息。 配置参数的数量和参数本身将有所不同。 基本上,它看起来像:
{
"configParam1" : "value1",
"configParam2" : "value2",
"configParam3" : "value3"
}
或者看起来像这样:
{
"configParam1 ": "value1",
"configParam2" : "value2"
}
意味着键的数量和实际键本身将有所不同。 我需要将此JSON转换为地图。
我知道您可以通过创建POJO来做到这一点,并且它将根据类进行转换,但是,鉴于参数有所不同,我无法将硬类定义转换为POJO 。
有什么办法可以解决这个问题?
通常,不要放置类似:
@POST
@Produces(MediaType.APPLICATIONJSON)
@Consumes(MediaType.APPLICATIONJSON)
methodName(MyClassObject postJSONresponse){
}
我可以这样做:
@POST
@Produces(MediaType.APPLICATIONJSON) .
@Consumes(MediaType.APPLICATIONJSON) .
methodName(Map (string,string) postJSONrepsonse){
} ?
有一个更好的方法吗?
如果可以的话请帮忙。
更新:我用了GSON。
这是我找到答案的链接:
我的功能看起来像这样:
@POST
@Produces(MediaType.APPLICATIONJSON)
@Consumes(MediaType.APPLICATIONJSON)
methodName(String json){
// convert the string to a Map using GSON:
Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> myMap =
gson.fromJson({'k1':'apple','k2':'orange'}", type);
//now myMap is a map (of type : linkedTreeMap, which implements map
}
您必须导入Gson类型令牌和我相信的类型。
希望这可以帮助任何需要它的人:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.