gpt4 book ai didi

java - 将 LinkedHashmap 转换为 POJO?

转载 作者:行者123 更新时间:2023-11-30 07:46:28 25 4
gpt4 key购买 nike

我有一个名为 Container 的 POJO,我想将其发送到 RESTful Web 服务。

客户端:

    try {

JAXBContext ctx = JAXBContextFactory.createContext(new Class[] {Container.class}, null);
jsonContent = objectToJSON(ctx, cont);
HttpEntity entity = new ByteArrayEntity(jsonContent.getBytes("UTF-8"));
((HttpPost) httpUriRequest).setEntity(entity);

} catch (JAXBException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

public String objectToJSON(JAXBContext ctx, Object object)
{
try
{
Marshaller marshaller = ctx.createMarshaller();

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");
marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, false);

StringWriter sw = new StringWriter();
marshaller.marshal(object, sw);

return sw.toString();
}
catch (JAXBException e){

System.out.println("--------JAXB EXCEPTION------------\n" );
e.printStackTrace();
LOGGER.error("JAXB marshalling error!", e);
}
return "HELLO";
}

我正在使用 REST-easy。

服务器端

@POST

@Consumes({"application/json"})
@Produces({"application/json"})
public String handlePostRequest(Object resource) {

System.out.println("\nINSIDE HANDLE POST: CONTENT CLASS" + resource.getClass());
System.out.println("\nINSIDE HANDLE POST: " + resource);
return "SIDD";
}

在这里,我收到以 Object 类型发送的内容: public String handlePostRequest(对象资源) {

因此,SOP 将类打印为 LinkedHashMap,并且我的 POJO (Container) 的属性在 HashMap 中设置为键值对。

这里我想使用 Object 类型,因为从客户端发送的 POJO 在请求之间可能有所不同。所以我想写一个通用函数。

现在,有没有一种标准方法可以将 LinkedHashMap (作为对象)转换为 java 中的 POJO?

最佳答案

您可以将 map 对象包装在 POJO 中,如下所示:

@Getter
@Setter
public class MyResource {
@JsonProperty("map")
private Map<Integer,Object> map; // or LinkedHashMap if you want

// You can have other fields here
}

您的方法签名将如下所示:

@POST
@Consumes("application/json")
@Produces("application/json")
public String handlePostRequest(MyResource resource) {
// Access your map
resource.getMap();
}

JacksonJaxbJsonProvider 为您进行编码和解码。 RESTful 服务的输入如下所示:

{
"map": {
"1" : "Hello",
"2" : "World",
...
}
}

关于java - 将 LinkedHashmap 转换为 POJO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33867322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com