envUrls
и commonUsers
свойства могут быть представлены типом List<Map<String, PojoX>>
, где PojoX
- это EnvUrls
или User
из модели ниже:
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import lombok.Data;
import lombok.ToString;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public class CommonConfApp {
public static void main(String[] args) throws IOException {
File jsonFile = new File("./resource/test.json").getAbsoluteFile();
ObjectMapper mapper = JsonMapper.builder().build();
System.out.println(mapper.readValue(jsonFile, CommonConf.class));
}
}
@Data
@ToString
class CommonConf {
private List<String> allEnvs;
private String env;
private List<Map<String, EnvUrls>> envUrls;
private String isCommonUsers;
private List<Map<String, User>> commonUsers;
private List<String> commonCodes;
}
@Data
@ToString
class EnvUrls {
private String cutomeUrl;
private String adminUrl;
private String webUrl;
private String salesUrl;
}
@Data
@ToString
class User {
@JsonProperty("fName")
private String fName;
@JsonProperty("lName")
private String lName;
}
Lombok
используется для удаления шаблонного кода. Выше приложение печатает:
CommonConf(allEnvs=[qa, dev, prestaging], env=qa, envUrls=[{qa=EnvUrls(cutomeUrl=testUrl, adminUrl=, webUrl=https://test.try.val, salesUrl=), dev=EnvUrls(cutomeUrl=testUrl, adminUrl=null, webUrl=, salesUrl=), prestaging=EnvUrls(cutomeUrl=testUrl, adminUrl=null, webUrl=, salesUrl=)}], isCommonUsers=true, commonUsers=[{teacher=User(fName=test, lName=test), student=User(fName=test, lName=test), ta=User(fName=test, lName=test)}], commonCodes=[test1, test2, test3])