3
votes

Comment créer un objet json avec une clé et une valeur, où la valeur est un tableau

J'ai besoin de créer un objet json avec une clé et une valeur, où valeur est un tableau de valeurs. Comment pourrais-je faire ça?

{"propName":"favouriteObjectsIds",
"value":"[\"5c93f4cc3a6565000483248d\",\"5c9b82ad24b33b0004227322\"]"}

J'ai essayé comme ça

public void add(String propertyName, String[] values){
        JsonArray array1 = new JsonArray();
        for(int i = 0; i < values.length; i++){
            array.add(values[i]);
        }

        JsonObject json = new JsonObject();
        json.addProperty("propName", propertyName);
        json.addProperty("value" ,array.toString());
    }

mais array.toString () me donne une telle sortie

{"propName" : "favouriteObjectsIds", 
 "value": [
        "5c93f4cc3a6565000483248d",
        "5c93f7843a6565000483248e"
        ] 
}


0 commentaires

3 Réponses :


0
votes

vous pouvez construire votre json avec ArrayList comme ceci:

public void add(String propertyName,ArrayList<String> list){

        Map map = new LinkedHashMap();
        map.put("propName", propertyName);
        map.put("value", list);


         JSONObject jObject = new JSONObject(map);
     //  convert JSONObject to JSON to String
         String  json = jObject.toString();

}


0 commentaires

2
votes

Vous devez utiliser .add au lieu de .addProperty pour JsonElements

public void add(String propertyName, String[] values){

    JsonArray array = new JsonArray();
    for(int i = 0; i < values.length; i++){
        array.add(values[i]);
    }

    JsonObject json = new JsonObject();
    json.addProperty("propName", propertyName);
    json.add("value" ,array);
}


0 commentaires

0
votes

Tous les exemples ci-dessus créent deux propriétés, chacune avec une clé (nom) et une valeur. La première clé de propriété est "propName" qui a la valeur "favouriteObjectsIds", la deuxième clé de propriété est "value" qui a la valeur "[" 5c93f4cc3a6565000483248d "," 5c93f7843a6565000483248e "]"

Je suppose que vous préférez ayez ceci:

String myJson = "{\"favouriteObjectsIds\":[\"5c93f4cc3a6565000483248d\",\"5c93f7843a6565000483248e\"]}"; 

JSONObject jObject = new JSONObject(myJson );

JSONArray jArray = jObject.getJSONArray("favouriteObjectsIds");

Si c'est vrai, vous pouvez le faire de cette façon:

{"favouriteObjectsIds": [
    "5c93f4cc3a6565000483248d",
    "5c93f7843a6565000483248e"
    ] 
}


1 commentaires

non, ce n'est pas le cas. J'ai besoin d'un tel format json, car mon api reste en prend un pour la méthode de patch, mais merci pour la réponse.