原因在于我的Selenium测试,我正在模拟REST服务以返回带有硬编码值的POJO,这代表我的虚拟数据。其中一个页面需要一个包含大量字段和子Java对象的对象列表(想想Person有List,List等)。
我做的一个快速方法是从其中一个从数据库中提取的REST服务生成一个JSON字符串。所以现在,我有一个JSON字符串,我保存为文件,可以作为我的硬编码数据加载到我的Selenium测试中。但是,我想在Java代码而不是单独的文件data.json文件中维护它。
有没有办法生成Java代码,这些代码基本上是来自JSON的值的行和行?我试图避免为每个字段手动编码每个setter ....
示例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"),依此类推其他字段。
答案 0 :(得分:0)
你的意思是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;
}
}
答案 1 :(得分:0)
您需要使用任何解析器(如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....