J'ai une classe en Java que je souhaite convertir en JSON. Le serveur qui accepte cette entrée attend un tableau JSON à un seul élément, contenant une mappe clé-valeur
Par exemple, si vous avez une classe comme indiqué:
public class Input { private String id1; private int id2; private String s1; private String s2; private String s3; ... } // Code which converts above class to JSON string: ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); Input input = new Input(id1, id2, s1, s2, s3); System.out.println(objectMapper.writeValueAsString(input)); // Actual Output: {"id1":"...","id2":...,"s1":"c...","s2":"...","s3":"..."} // Expected Output: [{"id1":"...","id2":...,"s1":"c...","s2":"...","s3":"..."}]
Une idée comment obtenir le «résultat attendu»?
3 Réponses :
Vous pouvez placer votre JSONObject dans JSONArray comme indiqué ci-dessous.
JSONObject obj = new JSONObject(); obj.put("firstName", firstName); obj.put("lastName", lastName); JSONArray array = new JSONArray(); array.put(obj)
Deux façons de faire cela (étant donné les mauvaises spécifications des questions)
Le moche
Input[] input = new Input[] { new Input(id1, id2, s1, s2, s3) }; System.out.println(objectMapper.writeValueAsString(input));
Le bon
System.out.println("[" + objectMapper.writeValueAsString(input) + "]");
Merci @Vincent Mimoun-Prat
Je déconseillerais fortement le premier, et le second est une syntaxe invalide.
Correction de la syntaxe, mon Java est rouillé. Bien sûr, le n ° 1 est déconseillé.
Une façon de procéder est:
System.out.println(objectMapper.writeValueAsString(new Object[] { input }));
Mettez simplement votre sortie dans un tableau?
@marsnebulasoup, pourriez-vous partager le code pour cela?
System.out.println (objectMapper.writeValueAsString (new Object [] {input})); => On dirait que ça fait l'affaire!
@Jared Au lieu de
new Object[] { input }
vous pouvez également utiliserCollections.singletonList(input)
.Merci @marsnebulasoup
Pas de problème @Jared. Heureux de vous aider
Merci @Ivar