私は車輪の作成を楽しむ Web サービスを使用しています。オブジェクトのシーケンスの場合、JSON 配列内にデータを格納する代わりに、シーケンスのインデックスごとに新しいノードを作成します。
{
"sequence": {
"0": {
"foo": "foo",
"bar": "bar",
"baz": "baz"
},
"1": {
"foo": "foo",
"bar": "bar",
"baz": "baz"
},
"2": {
"foo": "foo",
"bar": "bar",
"baz": "baz"
}
}
}
これをjacksonを使用してシーケンスBeanの配列またはコレクションに逆シリアル化するためのエレガントなソリューションまたは正気のアプローチを誰かが持っているかどうか疑問に思っていました
public class SequenceElement {
String foo, bar, baz;
// Getters and setters below
}
JsonNode としてシーケンスを操作することは、atm で思いつくことができる最善の方法です。ここに、テストされていない sudo コードがあります。
ObjectMapper objectMapper = new ObjectMapper();
@JsonProperty("sequence")
public void setSequence(JsonNode sequence) {
List<SequenceElement> list = new ArrayList<SequenceElement>();
int i = 0;
while( sequence.get( String.valueOf(i) ) != null ) {
JsonNode element = sequence.get( String.valueOf(i) );
list.add( objectMapper.readValue( element, SequenceElement.class );
i += 1;
}
this.sequence = list;
}