【问题标题】:how to convert the post request from xml to json in a restful web service如何在宁静的 Web 服务中将 post 请求从 xml 转换为 json
【发布时间】:2018-12-15 00:06:59
【问题描述】:
@POST    
@Path("/users")
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String createUser(@FormParam("id") int id,
@FormParam("name") String name,
@FormParam("profession") String profession,
@Context HttpServletResponse servletResponse) throws IOException{
User user = new User(id, name, profession);
int result = userDao.addUser(user);
if(result == 1){
return SUCCESS_RESULT;
}
return FAILURE_RESULT;
}

强文本

参考:https://www.tutorialspoint.com/restful/restful_methods.htm

【问题讨论】:

  • 你说的convert是什么意思?
  • 我的意思是我想使用 json 来生成和使用上面的代码
  • 您需要做的第一件事是为您的项目添加一个 JSON 提供程序。然后把MediaType.APPLICATION_XML改成APPLICATION_JSON
  • @Paul Samsotha:我试过了,但还是不行

标签: java json rest jersey


【解决方案1】:

生产和消费是共享内容类型和接受标头。 您可以继续以 application/Json 的形式获取输入。 但我会给你 XML 到 JSON 的转换 使用 jaxb 加载 XML

Catalog catalog = JAXB.unmarshal(new File(xmlFile), Catalog.class);

现在你必须序列化 java 对象

ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(System.out, catalog);

你已经完成了。!

【讨论】:

    【解决方案2】:

    如果您想以 JSON 格式返回值,请删除 @Produces(MediaType.APPLICATION_XML) 并使用 @Produces(MediaType.APPLICATION_JSON) 而不是 XML。默认媒体类型始终为 JSON 但是在您的代码中,您返回的 STRING 值根本不是 JSON。如果您坚持返回字符串值,请使用 @Produces(MediaType.APPLICATION_JSON_VALUE) 它将返回一个等效于 MediaType.APPLICATION_JSON 的字符串。

    【讨论】:

    • 你能说清楚吗,我试过用@Produces(MediaType.APPLICATION_JSON)。
    • 在我的情况下,我正在返回一个对象
    • 如果@Produces(MediaType.APPLICATION_JSON) 没有返回结果,请使用@Produces(MediaType.APPLICATION_JSON_VALUE) 它将转换返回json
    【解决方案3】:

    使用

    @Produces(MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON) 
        at method level
    

    并使用

    @XMLRootElement
    

    在 pojo 类级别

    【讨论】:

      猜你喜欢
      • 2014-11-26
      • 2013-11-16
      • 2012-02-08
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 2019-01-20
      • 2019-10-11
      • 1970-01-01
      相关资源
      最近更新 更多