我从客户端获取json数据,我想将json数据转换为java对象并存储到db中

时间:2017-12-18 10:07:37

标签: java json rest

    Client client = Client.create();
    WebResource webResource = client
            .resource("my url");
    String name = "adn";
    String password = "34";
    String authString = name + ":" + password;
    String authStringEnc = new BASE64Encoder().encode(authString
            .getBytes());
    // System.out.println("Base64 encoded auth string: " +
    // authStringEnc);
    ClientResponse response = webResource.accept("application/json")
            .header("Authorization", "Basic " + authStringEnc)
            .get(ClientResponse.class);

    String output = response.getEntity(String.class);

    System.out.println(output);

我得到像这样的o / p

  

{" count":[{" college_name":" GPT,Karimngr"," college_epass_id":18},   {" college_name":" GPT,Dra"," college_epass_id":444},

我想将json数据类型转换为java对象,请你建议。

3 个答案:

答案 0 :(得分:0)

由于您没有指定您使用的确切容器,因此有很多选项,但无论如何您需要创建DTO(数据传输对象类),从JSON获取数据并放入此类,然后到DB。

最直接的是将响应作为字符串并使用Jackson

进行解析

在真正的java web项目中,通常使用现代Web容器,它可以将这样的JSON转换为您的DTO automatically,所以我建议您阅读容器的文档以便开始

答案 1 :(得分:0)

查看Google的Gson:http://code.google.com/p/google-gson/

从他们的网站:

Gson gson = new Gson(); // Or use new GsonBuilder().create();
MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2

您只需要使用json字符串中的所有字段创建一个MyType类(当然是重命名的)。如果您喜欢手动执行所有解析(也非常简单),请查看http://www.json.org/并下载Json解析器对象的Java源代码。当您执行数组时,它可能会变得更复杂一些。

答案 2 :(得分:0)

查看此JAX-RS示例。

JAX-RS是Java内置的编组和UnMarshalling机制。 通过添加简单的基于XML的注释,我们可以简单地将JSON或XML请求转换为Java POJO模型和签证版。

上面的示例将概述 JAX-RS REST Web服务的基本用法。

使用杰克逊

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);

你的课程会像

一样
public class CollegeList{
  @JsonProperty("counts")
  public List<College> counts;
}



 public class College{
     @JsonProperty("college_name") public String college_name;
     @JsonProperty("college_epass_id") public int college_epass_id;
    }

您可以通过

将json转换为相应的对象
CollegeList colleges = mapper.readValue(jsonString, CollegeList .class);

分享Reference链接了解详情。