将任意JSON从POST主体转换为地图JAVA REST

时间:2017-09-07 18:28:30

标签: java json rest post jackson

我目前正在使用 REST 网络服务。其中一种方法是POST请求,其中用户以 JSON 的格式发送一些配置详细信息。配置参数的数量和参数本身会有所不同。基本上,它看起来像:

{

"configParam1" : "value1", 
"configParam2" : "value2",
"configParam3" : "value3"
}

或者看起来像这样:

{  
"configParam1 ": "value1",

"configParam2" : "value2"

}

意味着键的数量和实际键本身会有所不同。 我需要将此 JSON 转换为地图。

我知道您可以通过创建 POJO 来实现,并且会根据类进行转换,但是,鉴于参数不同,我无法转换硬类定义至。

有什么方法可以解决这个问题吗?

一般而言,不要像以下那样:

@POST
@Produces(MediaType.APPLICATIONJSON)
@Consumes(MediaType.APPLICATIONJSON)
methodName(MyClassObject postJSONresponse){ 
}
我可以这么做:

@POST  
@Produces(MediaType.APPLICATIONJSON) .  
@Consumes(MediaType.APPLICATIONJSON) .  
methodName(Map (string,string) postJSONrepsonse){

} ?

有更好的方法吗?

如果可以,请帮忙。

1 个答案:

答案 0 :(得分:0)

更新: 我用了GSON。

以下是我找到答案的链接:

How can I convert JSON to a HashMap using 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 Type Token和Type I相信。

希望这可以帮助任何需要它的人:)