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