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

问题描述 投票:-1回答:3

这个问题在这里已有答案:

    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

{“计数”:[{“college_name”:“GPT,Karimngr”,“college_epass_id”:18}, {“college_name”:“GPT,Dra”,“college_epass_id”:444},

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

java json rest
3个回答
0
投票

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

最简单的是使用Jackson作为字符串和解析得到响应

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


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源代码,这可能会让您在执行数组时变得更复杂一些。


0
投票

看看这个JAX-RS的例子。

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

上面的示例将概述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链接了解更多详情。

© www.soinside.com 2019 - 2024. All rights reserved.