[英]Generate Java Code that populates all fields from a JSON file
这样做的原因是在我的Selenium测试中,我正在模拟REST服务以返回具有硬编码值的POJO,这些POJO代表我的伪数据。 其中一页需要一个包含大量字段和Java对象子对象的对象列表(认为Person具有List,List等)。
我做的一种快速方法是从一个从数据库中提取的REST服务中生成一个JSON字符串。 所以现在,我有了一个JSON字符串,我将它保存为文件,并且可以将其作为硬编码数据加载到我的Selenium测试中。 但是,我想在Java代码中而不是在单独的文件data.json文件中维护它。
有没有一种生成Java代码的方法,它基本上是几行设置程序,其值来自JSON? 我试图避免必须为每个字段手动编码每个设置器。
示例json文件(实际上它具有更多字段和更多子级...):
{
"personEntity":{
"name":"xxx",
"dob":"2000-01-01",
"address":[
{
"id":"1",
"line1":"123"
},
{
"id":"2",
"line1":"zzz"
}
],
"phones":[
{
"id":"1",
"number":"999-999-999"
}
]
}
}
自动生成的所需Java代码:
Person p = new Person();
p.setName("xxx");
p.setDob("2000-01-01");
Address a1 = new Address();
a1.setId(1);
a1.setLine1("123")
p.addAddress(a1);
// and so on for the other fields
注意:
POJO已经存在,不需要自动生成。 我正在寻找的唯一自动生成的代码是上面的示例,例如p.setName(“ xxx”),其他字段等等。
您的意思是JSON-> JAVA Bean吗? 您可以使用此网站json2javapojo
那么您可以使用JSON utils进行解析。
package ;
public class Address {
private String id;
private String line1;
public void setId(String id){
this.id = id;
}
public String getId(){
return this.id;
}
public void setLine1(String line1){
this.line1 = line1;
}
public String getLine1(){
return this.line1;
}
}
package ;
public class Phones {
private String id;
private String number;
public void setId(String id){
this.id = id;
}
public String getId(){
return this.id;
}
public void setNumber(String number){
this.number = number;
}
public String getNumber(){
return this.number;
}
}
package ;
import java.util.List;
public class PersonEntity {
private String name;
private String dob;
private List<Address> address ;
private List<Phones> phones ;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setDob(String dob){
this.dob = dob;
}
public String getDob(){
return this.dob;
}
public void setAddress(List<Address> address){
this.address = address;
}
public List<Address> getAddress(){
return this.address;
}
public void setPhones(List<Phones> phones){
this.phones = phones;
}
public List<Phones> getPhones(){
return this.phones;
}
}
package ;
public class Root {
private PersonEntity personEntity;
public void setPersonEntity(PersonEntity personEntity){
this.personEntity = personEntity;
}
public PersonEntity getPersonEntity(){
return this.personEntity;
}
}
您需要使用任何解析器(例如GSON,Jackson,JSON simple等)将返回的JSON反序列化为java对象。
一些在线工具可以帮助您轻松完成工作。 您可以使用jsonschema2pojo
-----------------------------------com.example.Address.java-----------------------
package com.example;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"id",
"line1"
})
public class Address {
@JsonProperty("id")
private String id;
@JsonProperty("line1")
private String line1;
@JsonProperty("id")
public String getId() {
return id;
}
@JsonProperty("id")
public void setId(String id) {
this.id = id;
}
@JsonProperty("line1")
public String getLine1() {
return line1;
}
@JsonProperty("line1")
public void setLine1(String line1) {
this.line1 = line1;
}
}
and so on....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.