J'ai un pojo, j'ai besoin de formater en tant que multivaleumap. Ce multivaleumap sera utilisé comme demande dans une méthode postale à l'aide de la classe Resttemplate et sera transmise à mon service Web en tant que ContentType Application / X-www-Form-Urlencodé.
Y a-t-il des outils ou des utilitaires qui feront la conversion Pojo -> MultivéMap pour moi? P>
échantillon POJO: P>
id=11752&active=true&lastName=Brownie& promptValues[0].id=12&promptValues[0].miscPromptId=882&promptValues[0].value=meFirst& promptValues[1].id=13&promptValues[1].miscPromptId=881&promptValues[1].value=youToo& surgeonClinics[0].address1=newAddress&surgeonClinics[0].address2=newAddress2&surgeonClinics[0].city=clinic City& surgeonClinics[0].email=email@clinic1.com&surgeonClinics[0].fax=123.456.7890&surgeonClinics[0].id=33273& surgeonClinics[0].name=clinic name&surgeonClinics[0].phone=890-098-4567& surgeonClinics[0].zip=34567&surgeonClinics[0].surgeryCenter1=MySurgeryCenter1& surgeonClinics[0].surgeryCenter2=MySurgeryCenter2& surgeonClinics[1].address1=newAddress11&surgeonClinics[1].address2=newAddress22&surgeonClinics[1].city=clinic2 City& surgeonClinics[1].email=email@clinic2.com&surgeonClinics[1].fax=123.456.7890&surgeonClinics[1].id=33274& surgeonClinics[1].name=clinic2 name&surgeonClinics[1].phone=890-098-4567& surgeonClinics[1].zip=34567& surgeonClinics[1].surgeryCenter1=MySurgeryCenter21&surgeonClinics[1].surgeryCenter2=MySurgeryCenter22
3 Réponses :
Vous pouvez le faire avec une réflexion et / ou une introspection (je ne me souviens jamais du nom correct). Il s'agit d'une variante de sérialisation. Vous pouvez donc vouloir regarder dans la mise en œuvre de la sérialisation.
Une autre option consiste à créer une interface similaire à cette p> et mise en oeuvre Les classes en question. P> Pour votre pojo, cela pourrait ressembler à ceci: p>
Si vous souhaitez l'envoyer dans le format que vous avez spécifié dans votre question, vous voudrez peut-être faire quelque chose comme ce que DWB suggéré, cependant, je pense que vous pouvez trouver plus facile de convertir si vous utilisez une approche plus orientée objet telle que JSON , il y a beaucoup de bibliothèques à convertir entre Pojo-> Json. Un autre avantage est que JSON gère les numéros / chaînes / chaînes / booléens séparément, il est donc plus facile de reconvertir à un POJO alors que si vous envoyez les données comme dans votre exemple, vous devez convertir tous les objets de chaîne dans quel type ils sont par exemple. ID devra être converti string-> int et actif chaîne convertie-> booléenne.
Donc, dans Json, il peut ressembler à ceci: p>
dto = {
id : 11752,
active : true,
lastName : "Brownie",
promptValues : [
{id : 12, miscPromptId : 882, value : "meFirst"},
{id : 13, miscPromptId : 881, value : "youToo"}
],
surgeonClinics = [{..etc..}]
}
Vous pouvez utiliser Jackson ObjectMapper:
MultiValueMap valueMap = new LinkedMultiValueMap<String, Object>();
Map<String, Object> fieldMap = objectMapper.convertValue(requestObject, new TypeReference<Map<String, Object>>() {});
valueMap.setAll(fieldMap);
Montrez le pojo et la carte que vous attendez.
Ajout de certains échantillons de code pour démontrer la question.
Vous avez déjà posé cette question: Stackoverflow .com / questions / 3928163 / ...
Oui, et posant parfois différentes questions ou aborder des problèmes d'une manière différente d'une solution.