【问题标题】:Converting arbitrary JSON from POST body to a map JAVA REST将任意 JSON 从 POST 正文转换为地图 JAVA REST
【发布时间】:2017-09-07 18:28:29
【问题描述】:

我目前正在使用 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){

} ?

有没有更好的方法来做到这一点?

如果可以,请提供帮助。

【问题讨论】:

    标签: java json rest post jackson


    【解决方案1】:

    更新: 我用过 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 我相信。

    希望这对需要它的人有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-06
      • 2010-10-01
      • 2017-02-14
      • 1970-01-01
      • 2022-01-07
      • 2012-11-30
      • 2013-09-09
      • 2021-12-01
      相关资源
      最近更新 更多