J'utilise Java pour appeler une URL qui renvoie un objet JSON :
url = new URL("my URl");
urlInputStream = url.openConnection().getInputStream();
Comment puis-je convertir la réponse sous forme de chaîne et l'analyser ?
J'utilise Java pour appeler une URL qui renvoie un objet JSON :
url = new URL("my URl");
urlInputStream = url.openConnection().getInputStream();
Comment puis-je convertir la réponse sous forme de chaîne et l'analyser ?
Je suggérerais que vous deviez utiliser un lecteur pour convertir votre InputStream en.
BufferedReader streamReader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null)
responseStrBuilder.append(inputStr);
new JSONObject(responseStrBuilder.toString());
J'ai essayé in.toString() mais il renvoie :
getClass().getName() + '@' + Integer.toHexString(hashCode())
(comme la documentation dit qu'il dérive de toString de l'objet)
Pour ceux qui ont souligné le fait que vous ne pouvez pas utiliser la méthode toString de InputStream comme celle-ci, voir https://stackoverflow.com/a/5445161/1304830 :
Ma bonne réponse serait alors :
import org.json.JSONObject;
public static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
...
JSONObject json = new JSONObject(convertStreamToString(url.openStream());
Si vous aimez utiliser Jackson Databind (que Spring
utilise par défaut pour ses HttpMessageConverters
), vous pouvez utiliser l' API ObjectMapper.readTree(InputStream) . Par exemple,
ObjectMapper mapper = new ObjectMapper();
JsonNode json = mapper.readTree(myInputStream);
utilisez jackson pour convertir le flux d'entrée json en carte ou en objet http://jackson.codehaus.org/
il existe également d'autres bibliothèques utiles pour json, vous pouvez google : json java
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.