我有一个带有此模型类的请求正文:
public class IvrRequest {
int age;
String name;
String address;
List<IvrRequest> children;
}
我想将此映射到另一个类模型,例如:
public class IvrMapper {
int id;
String name;
List<IvrMapper> resourceElements;
}
我应该使用哪种方法?
例:-
{
"age":16,
"name":"Rohit",
"address":"adgsgdsdfgsdfgsf",
"children":[
{
"age":16,
"name":"Rohit",
"address":"adgsgdsdfgsdfgsf",
"children":[{
"age":16,
"name":"Rohit",
"address":"adgsgdsdfgsdfgsf"
}]
},
{
"age":45,
"name":"Singh",
"address":"45afasdfas54df6asdf",
"children":[{
"age":55,
"name":"nitin",
"address":"@%^%@#^Ghagdhasdhg"
}]
}]
}
这是请求正文的示例。
你没有指定你使用的库,所以我建议使用Jackson
,允许快速和容易deserialising从JSON
到Java
模型,并从一个POJO
到其他。如果您不能更改类或类属于3-rd party
库,则可以始终使用MixIn
feature。以下示例显示了如何:
JSON
到IvrRequest
JSON
到IvrMapper
IvrRequest
成IvrMapper
简单的应用程序:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.util.List;
public class JsonApp {
public static void main(String[] args) throws Exception {
File jsonFile = new File("./resource/test.json").getAbsoluteFile();
ObjectMapper mapper = new ObjectMapper();
mapper.addMixIn(IvrMapper.class, IvrMapperMixIn.class);
System.out.println("Parse IvrRequest model: ");
IvrRequest ivrRequest = mapper.readValue(jsonFile, IvrRequest.class);
System.out.println(ivrRequest);
System.out.println("Parse IvrMapper model: ");
System.out.println(mapper.readValue(jsonFile, IvrMapper.class));
System.out.println("Convert IvrRequest to IvrMapper");
System.out.println(mapper.convertValue(ivrRequest, IvrMapper.class));
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
interface IvrMapperMixIn {
@JsonProperty("age")
int getId();
@JsonProperty("children")
List<IvrMapper> getResourceElements();
}
class IvrRequest {
private int age;
private String name;
private String address;
private List<IvrRequest> children;
// getters, setters, toString
}
class IvrMapper {
private int id;
private String name;
private List<IvrMapper> resourceElements;
// getters, setters, toString
}
应用上方的照片:
Parse IvrRequest model:
age=16, name='Rohit', address='adgsgdsdfgsdfgsf'
children=
age=16, name='Rohit', address='adgsgdsdfgsdfgsf'
children=
age=16, name='Rohit', address='adgsgdsdfgsdfgsf'
age=45, name='Singh', address='45afasdfas54df6asdf'
children=
age=55, name='nitin', address='@%^%@#^Ghagdhasdhg'
Parse IvrMapper model:
id=16, name='Rohit'
resourceElements=
id=16, name='Rohit'
resourceElements=
id=16, name='Rohit'
id=45, name='Singh'
resourceElements=
id=55, name='nitin'
Convert IvrRequest to IvrMapper
id=16, name='Rohit'
resourceElements=
id=16, name='Rohit'
resourceElements=
id=16, name='Rohit'
id=45, name='Singh'
resourceElements=
id=55, name='nitin'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句