現在、Restlet パッケージとその Jackson 拡張機能を使用して、RESTful サービスを使用する Java クライアントを作成しています。ユーザーのサービスをクエリし、User
次のような POJOへの応答を逆シリアル化します。
@JsonIgnoreProperties(ignoreUnknown=true)
public class User {
private Integer uid;
private String name;
private String mail;
private String field_nickname;
// omitted for brevity: getters/setters, toString
}
サービスからのサンプル応答は次のようになります。
{
"uid": "5",
"name": "John Doe",
"mail": "john@example.com",
"field_nickname": {
"und": [{
"value": "jdoe",
"format": null,
"safe_value": "jdoe"
}]
}
}
Java クライアント コードは次のとおりです。
import org.restlet.resource.ClientResource;
public class TestClient {
public static void main(String[] args) throws Exception {
// Getting a User
ClientResource cr = new ClientResource("http://localhost/rest/user/7.json")
User user = cr.get(User.class);
System.out.println(user);
// Creating a User
cr = new ClientResource("http://localhost/rest/user.json");
User user = new User();
user.setName("Jane Doe");
user.setFieldNick("jdoe2");
user.setMail("jdoe2@example.com");
cr.post(user);
}
uid
、name
およびフィールドのシリアル化/逆シリアル化mail
は非常に簡単で、問題はありません。私の問題は次のとおりです。フィールドには、常に同じように見える単一のエントリを持つfield_nickname
配列が常に含まれています。und
String
このフィールドを値を保持するに逆シリアルfield_nickname[und][0][value]
化し、属性をそのような配列にシリアル化するように Jackson に指示するにはどうすればよいですか?