【问题标题】:Json to pojo convertionsJson 到 pojo 的转换
【发布时间】:2017-09-08 01:58:14
【问题描述】:

我们如何将以下类型的 json 转换为 java 对象

{
    "complaint_Map": {
        "1000067730": "3011351597604397",
        "1000067730-06": "10582576134561065"
    }
}

如果有人对此有任何想法,请告诉我们如何做到这一点。

【问题讨论】:

  • 使用jackson或gson
  • 你试过什么?问题被标记为spring-boot 的原因是什么?
  • 因为在我的 spring-boot 项目中,我需要将用户名基础数据移动到基于策略的数据从 RIAK KV 存储桶到另一台服务器的另一个存储桶,这就是为什么这里不需要 spring-boot 标记! !!

标签: java json spring-boot


【解决方案1】:

杰克逊

import com.fasterxml.jackson.databind.ObjectMapper;

试试

ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{\"complaint_Map\":{\"1000067730\":\"3011351597604397\",\"1000067730-06\":\"10582576134561065\"}}";
Map<String,Object> pojo = mapper.readValue(jsonInString, Map.class);
System.out.println(((Map<String,Object>)pojo.get("complaint_Map")).get("1000067730")+"");

将打印

 3011351597604397

【讨论】:

    【解决方案2】:

    在 java 中,您可以使用 Jackson 库将简单的 POJO 转换为 JSON。

    来自维基百科:

    Jackson 是用于 Java 的高性能 JSON 处理器。它的开发者称赞库的快速、正确、轻量级和人体工程学属性的结合。

    这里是维基百科的例子:

    public class ReadWriteJackson {
        public static void main(String[] args) throws IOException {
            ObjectMapper mapper = new ObjectMapper();
            String jsonInput = 
              "{\"id\":0,\"firstName\":\"Robin\",\"lastName\":\"Wilson\"}";
            Person q = mapper.readValue(jsonInput, Person.class);
            System.out.println("Read and parsed Person from JSON: " + q);
    
            Person p = new Person("Roger", "Rabbit");
            System.out.print("Person object " + p + " as JSON = ");
            mapper.writeValue(System.out, p);
        }
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用 jackson 的 ObjectMapper 来完成。

      假设 json 定义了一个 java 对象, 那么它可以通过

      import org.codehaus.jackson.map.ObjectMapper;
      
      YourObject mappingClassObject = new YourObject();
      ObjectMapper mapper = new ObjectMapper(); 
      try{
         mappingClassObject = mapper.readValue(yourJSON, YourObject.class);
      }catch(Exception e){
        e.printStackTrace();
      }
      

      【讨论】:

        【解决方案4】:

        如果您想要使用Jackson 库的解决方案,这里就是。

        自定义类:

        @JsonRootName("complaint_Map")
        public class Complaint {
            private String firstKey;
            private String secondKey;
        
            @JsonProperty("1000067730")
            public String getFirstKey() {
                return firstKey;
            }
            @JsonProperty("1000067730")
            public void setFirstKey(String firstKey) {
                this.firstKey = firstKey;
            }
        
            @JsonProperty("1000067730-06")
            public String getSecondKey() {
                return secondKey;
            }
        
            @JsonProperty("1000067730-06")
            public void setSecondKey(String secondKey) {
                this.secondKey = secondKey;
            }
        
            @Override
            public String toString() {
                return "Complaint{" +
                        "firstKey='" + firstKey + '\'' +
                        ", secondKey='" + secondKey + '\'' +
                        '}';
            }
        }
        

        以及测试方式:

        String jsonString = "{\"complaint_Map\":{\"1000067730\":\"3011351597604397\",\"1000067730-06\":\"10582576134561065\"}}";
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
        try {
            Complaint complaint = mapper.readValue(jsonString, Complaint.class);
            System.out.println(complaint);
        } catch (Exception e) {
            e.printStackTrace();
        }
        

        我使用了以下版本(Maven pom):

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.4.1.3</version>
        </dependency>
        

        【讨论】:

          猜你喜欢
          • 2014-04-17
          • 1970-01-01
          • 2021-10-17
          • 1970-01-01
          • 2021-04-24
          • 2019-07-06
          • 1970-01-01
          • 1970-01-01
          • 2023-03-09
          相关资源
          最近更新 更多