-2
votes

Comment encapsuler un objet JSON dans un tableau à un seul élément en Java

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»?


7 commentaires

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 utiliser Collections.singletonList(input) .


Merci @marsnebulasoup


Pas de problème @Jared. Heureux de vous aider


Merci @Ivar


3 Réponses :


0
votes

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)


0 commentaires

0
votes

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) + "]");


3 commentaires

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é.



0
votes

Une façon de procéder est:

System.out.println(objectMapper.writeValueAsString(new Object[] { input }));


0 commentaires