繁体   English   中英

如何在spring boot java中从给定的json中获取键值

[英]How to take key-values from given json in spring boot java

从给定的 json 中获取键值的代码是什么,我们可以使用哈希映射? 如何编写代码?需要更改 pojo 类吗?我需要从 JSON 中获取 'startTime' 和 'endTime'

My input Json 
    {
    "active" : 0,
    "id" : 3,
    "doctorId" :8,
    "hospitalId" : 55,
    "timeSlot" : [
         { "startTime": "10",
           "endTime": "12" 
         },
         { "startTime": "3",
           "endTime": "5" 
         }
        ]
    }

我的代码

List slot = customDuty.getTimeSlot();
                    int count = 0;      
                    while (slot.size() > count) {
                        logger.info("checking"+slot.get(count));
                       count++;

                    }

Pojo类

private List timeSlot ;

    public List getTimeSlot() {
        return timeSlot;
    }
    public void setTimeSlot(List timeSlot) {
        this.timeSlot = timeSlot;
    }

输出

checking{startTime=10, endTime=12}
checking{startTime=3, endTime=5}

如果您正在使用 SpringBoot java,则需要在 POM 中添加 Jackson 依赖项

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

然后你需要用你的 POJO 映射 json 文件

public class ObjectMapperDemo {
 public Hospital readJsonWithObjectMapper() throws IOException {
    ObjectMapper objectMapper = new ObjectMapper(); 
    Hospital hos = objectMapper.readValue(new File("hospital.json"), Hospital.class);
    return hospital;
} 
}

医院实体类定义如下:

import java.util.List;

public class Hospital {
private boolean active;
private int id;
private int doctorId;
private int hospitalId;
private List<TimeSlot> timeSlot;`

public boolean isActive() {
    return active;
}

public void setActive(boolean active) {
    this.active = active;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public int getDoctorId() {
    return doctorId;
}

public void setDoctorId(int doctorId) {
    this.doctorId = doctorId;
}

public int getHospitalId() {
    return hospitalId;
}

public void setHospitalId(int hospitalId) {
    this.hospitalId = hospitalId;
}

public List<TimeSlot> getTimeSlot() {
    return timeSlot;
}

public void setTimeSlot(List<TimeSlot> timeSlot) {
    this.timeSlot = timeSlot;
}

@Override
public String toString() {
    return "Hospital{" +
            "active=" + active +
            ", id=" + id +
            ", doctorId=" + doctorId +
            ", hospitalId=" + hospitalId +
            ", timeSlot=" + timeSlot +
            '}';
}

}

最 Java 风格是创建一个 TimeSlot pojo

class TimeSlot {

  private int startTime;
  private int endTime;

  // getters and setters
}

然后在你的主要实体中

class MainEntity {

  private List<TimeSlot> timeSlot;

  // getters and setters
}

然后你让 spring (jersey) 为你解析它。

用法:

mainEntity.getTimeSlots().foreach(timeSlot -> logger.log(
   "checking\{startTime={}, endTime={}\}",
   timeSlot.getStartTime(),
   timeSlot.getEndTime(),
))

但实际上,您可以采用将HashMap<String, Integer>作为timeSlot类型的timeSlot ,并通过其键进行访问。

class MainEntity {

  private List<HashMap<String, Integer>> timeSlot;

  // getters and setters
}
mainEntity.getTimeSlots().foreach(timeSlot -> logger.log(
   "checking\{startTime={}, endTime={}\}",
   timeSlot.get("startTime"),
   timeSlot.getEndTime("endTime"),
))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM