web-dev-qa-db-fra.com

conversion de la liste de tableaux en chaîne d'objet json

J'ai une méthode de classe de modèle qui renvoie une liste d'objets contenant tous les détails de l'utilisateur enregistré. Je veux récupérer la liste restituée par la méthode all (), convertir les données en objet JSON et les transmettre à la vue comme une chaîne. Comment puis-je faire cette conversion de cette liste de tableaux en objet JSON? 

J'ai été incapable de faire cela par ci-dessous: 

ObjectMapper mapper = new ObjectMapper();
JSONObject json = new JSONObject();
JsonNodeFactory jsonnode = JsonNodeFactory.instance;
ObjectNode result = new ObjectNode(jsonnode);
for (int i = 0; i < list.size(); i++) {
    json.put(list.get(i).fname, list.get(i));
    System.out.println(json.get("fname"));
}

@Entity
class Mydata extends Model {

    @Id
    public Long Id;
    public String fname;
    public String lname;
    public String city;
    public String state;
    /****************** READ/select OPERATION *****************/
    public static Finder < Long, Mydata > Finder = new Finder(Long.class, Mydata.class);

    public static List < Mydata > all() {
        return Finder.all();
    }
    public static void createuser(Mydata user) {
        user.save();
    }
}
11
pret

Pour convertir ArrayList en Json, il suffit de télécharger l’utilitaire Open Source json à partir de: http://json.org/Java/ ou du fichier Jar à partir de ici

Et juste faire:

JSONArray jsonAraay = new JSONArray(your_array_list);

C'est tout

Remarque: Vous devez avoir un setter/getter dans votre classe POJO/MODEL pour convertir un arraylist en json.

19
Rakesh Bhalani

Ne vous embêtez pas avec org.json, utilisez Jackson jusqu'au bout:

// list is a List<MyData>
final ObjectMapper mapper = new ObjectMapper();
final Map<String, MyData> map = new HashMap<>();
for (final MyData data: list)
    map.put(data.fname, data);
final JsonNode json = mapper.valueToTree(map);
1
fge

Vous pouvez utiliser toutes sortes de bibliothèques tierces comme suggéré par d'autres ici, ou simplement utiliser les méthodes simplifiées de Play pour cela (trouvées dans play.libs.Json) qui fonctionnent avec des objets Jackson, mais elles sont intégrées au framework et nécessitent beaucoup moins de code à utiliser , par exemple:

JsonNode myJsonNode = Json.toJson(MyListObject); qui convertit la liste en objet JsonNode, puis utilisez quelque chose comme String jsonResult = Json.stringify(myJsonNode); pour le convertir en représentation sous forme de chaîne.

Si vous utilisez le JSON dans un modèle, n'oubliez pas de l'envelopper dans une fonction telle que @Html(myJsonString) afin qu'elle ne vous échappe pas. Sinon, si vous exportez simplement le JSON pur dans le navigateur, une simple return ok(jsonResult); fonctionnera, car Play définira automatiquement le type de contenu.

Lien de référence: http://www.playframework.com/documentation/api/2.0/Java/play/libs/Json.html

0
Mike Hawkins

avez-vous regardé ceci: http://www.json.org/javadoc/org/json/JSONObject.html#valueToString(Java.lang.Object)

JSONObject.valueToString(<<your list of custom object>> OR <<objects>> OR <<map>>)

fonctionne très bien ... il existe d'autres méthodes sur cette bibliothèque, si cela vous intéresse ...

0
labheshr