Comment convertir une liste en Json en Java
Comment convertir une liste générique en json en Java.J'ai la classe comme ça..
public class Output
{
public int Keyname { get; set; }
public Object outputvalue{ get; set; } //outvalue may be even a object collection
}
List<Output> outputList = new List<Output>();
Je veux convertir outputList en json en Java.Après la conversion, je l'enverrai au client.
8 answers
Utilisez la bibliothèque GSON pour cela. Voici l'exemple de code
List<String> foo = new ArrayList<String>();
foo.add("A");
foo.add("B");
foo.add("C");
String json = new Gson().toJson(foo );
Voici la dépendance maven pour Gson
<dependencies>
<!-- Gson: Java to Json conversion -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
Ou vous pouvez directement télécharger jar à partir d'ici et le mettre dans votre chemin de classe
Http://code.google.com/p/google-gson/downloads/detail?name=gson-1.0.jar&can=4&q=
Pour envoyer Json au client, vous pouvez utiliser spring ou dans un simple servlet ajouter ce code
Réponse.getWriter().écrire(json);
Vous avez besoin d'une bibliothèque externe pour cela.
JSONArray jsonA = JSONArray.fromObject(mybeanList);
System.out.println(jsonA);
Google GSON est l'une de ces bibliothèques
Vous pouvez également jeter un oeil ici pour des exemples sur la conversion de la collection d'objets Java en chaîne JSON.
Jackson fournit une API très utile et légère pour convertir un objet en JSON et vice versa. Veuillez trouver l'exemple de code ci-dessous pour effectuer l'opération
List<Output> outputList = new ArrayList<Output>();
public static void main(String[] args) {
try {
Output output = new Output(1,"2342");
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(output);
System.out.println(jsonString);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
Il existe de nombreuses autres fonctionnalités et une bonne documentation pour l'API Jackson. vous pouvez vous référer aux liens comme: https://www.journaldev.com/2324/jackson-json-java-parser-api-example-tutorial..
Dépendances à inclure dans le projet sont
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.5.1</version>
</dependency>
Regardez la bibliothèquegoogle gson . Il fournit une api riche pour y faire face et est très simple à utiliser.
Essayez ceci:
public void test(){
// net.sf.json.JSONObject, net.sf.json.JSONArray
List objList = new ArrayList();
objList.add("obj1");
objList.add("obj2");
objList.add("obj3");
HashMap objMap = new HashMap();
objMap.put("key1", "value1");
objMap.put("key2", "value2");
objMap.put("key3", "value3");
System.out.println("JSONArray :: "+(JSONArray)JSONSerializer.toJSON(objList));
System.out.println("JSONObject :: "+(JSONObject)JSONSerializer.toJSON(objMap));
}
Vous pouvez trouver API ici.
Télécharger java-json.pot de Java2s ensuite, utilisez le constructeur JSONArray
List myList = new ArrayList<>();
JSONArray jsonArray = new JSONArray(myList);
System.out.println(jsonArray);
Pour des raisons de simplicité et bien structurées, utilisez SpringMVC. C'est tellement simple.
@RequestMapping("/carlist.json")
public @ResponseBody List<String> getCarList() {
return carService.getAllCars();
}
Référence et de crédit: https://github.com/xvitcoder/spring-mvc-angularjs
Utilisez GSONBuilder avec setPrettyPrinting et disableHtml pour une sortie agréable.
String json = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().
create().toJson(outputList );
fileOut.println(json);