다른 클래스에 JSON 일부 필드를 직렬화 :나는 아래 형식의 JSON이
{
"id": 0,
"alternateId": 0,
"familyName": "",
"givenName": "",
"firstName":"",
"lastName": "",
"middleName": "",
"suffix": "",
"motherName": "",
"datOfBirth": "",
"sex": "",
"alias": [
{
"firstName": "",
"lastName": "",
"middleName": "",
"suffix": "",
}
]
}
당신이 관찰 할 수 있듯이을, 네 개의 필드 firstName
의 alias
필드에 존재하는 lastName
, middleName
및 suffix
부모 클래스의 필드로도 위에 있습니다.
public class Person
{
private int id;
private int alternateId;
private String familyName;
private String givenName;
private String firstName;
private String lastName;
private String middleName;
private String suffix;
private String motherName;
private Date datOfBirth;
private String sex;
private Set<Alias> alias;
}
public class Alias
{
private String firstName;
private String lastName;
private String middleName;
private String suffix;
}
그리고 잭슨 매퍼와의 작업 좋은 :
현재 나는 다음과 같은 클래스가 있습니다. 현재 JSON을 변경하지 않고
public class Person
{
private int id;
private int alternateId;
private String familyName;
private String givenName;
private Alias primaryAlias;
private String motherName;
private Date datOfBirth;
private String sex;
private Set<Alias> alias;
}
:하지만 내 질문은 Person 클래스에있는 필드는 필드 primaryAlias 및 클래스 새에 결합 될 수있다 줄일 수. 잭슨의 디시리얼라이저를 작성하기 위해 무언가를 수행하여 json의 firstName
, , middleName
및 suffix
필드를 새 변수 primaryAlias
에로드 할 수 있습니까?
전체 코드가 필요하지는 않지만 수행해야 할 힌트가 충분합니다. 검색을 시도했지만 어쩌면이 문제를 설명하기위한 완벽한 용어가 누락되었습니다.
아마도 이미지로 더 잘 설명 할 수 있습니다. 현재 일어나고있는 무슨이다 :
을 그리고 이것은 내가 원하는 무엇인가 :
응답을 삭제했습니다. 그러나 JSON에서 'alias'는 목록이므로 자동으로 수행 할 수 없습니다 ... 아마도 JSOn을 반복하여 객체를 수동으로 만들 수 있습니다. – canillas
@canillas 예. 내가 아는 한. 주석 및 맞춤형 디시리얼라이저를 사용하여 자동 잭슨 솔루션을 생각 중이었습니다. –
대신 org.json을 사용하면 가능합니다. 이 라이브러리를 사용하면 클래스의 'getter'에서 JSON 표현을 만들 수 있습니다. 따라서 원하는 문자열을 반환하는 getPrimaryAlias () 메서드를 만드는 경우 제대로 작동합니다. 다음은 그 예입니다 : https://stackoverflow.com/a/46826568/6370796 – Asew