Następne pytanie do mojej spokojnej usługi JSON.Marshal a java.util.Map <String, String>
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
/**
* @author Martin Burchard
*
*/
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.FIELD)
public class User {
private String id;
private String nickname;
private String email;
private String password;
private Map<String, String> user_attributes;
}
Obecnie usługa dostarcza następujące JSON (wgniatany dla lepszego odczytu):
{
"user" : {
"id" : "9bdf40ea-6d25-4bc3-94ad-4a3d38d2c3ca",
"email" : "[email protected]",
"password" : "xXpd9Pl-1pFBFuX9E0hAYGSDTyJQPYkOtXGvRCrEtMM",
"user_attributes" : {
"entry" : [{
"key" : "num",
"value" : 123
}, {
"key" : "type",
"value" : "nix"
}
]
}
}
}
Zabawne, że jest wewnętrznie Num 123 jest java.lang.String ...
ja nie rozumiem, co jest wyjaśnione tutaj http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-DealingwithJSONarrayserializationissues
chciałbym mieć to JSON:
{
"user" : {
"id" : "9bdf40ea-6d25-4bc3-94ad-4a3d38d2c3ca",
"email" : "[email protected]",
"password" : "xXpd9Pl-1pFBFuX9E0hAYGSDTyJQPYkOtXGvRCrEtMM",
"user_attributes" : {
"num" : "123",
"type" : "nix"
}
}
}
Zmieniłem dostawcę JSON na Jacksona. Teraz mój JSON wygląda mi się podoba ...
czy na pewno potrzebujesz mapy? nie możesz mieć obiektu o nazwie atrybuty użytkownika i mieć listę atrybutów użytkownika? –
Moje dodatkowe atrybuty zawsze zawierają nazwę i wartość, a ponieważ są przechowywane w bazie danych, zawsze są ciągami. Myślałem, że prosta mapa będzie wystarczająca. Czy zamiast tego powinienem użyć listy i obiektu atrybutów z nazwą i wartością? –
Nabor