web-dev-qa-db-fra.com

Convertir InputStream en JSON

J'utilise json-rpc-1.0.jar.Below est mon code. J'ai besoin de convertir l'objet InputStream en JSON car la réponse est en JSON.

J'ai vérifié la réponse JSON obtenue à partir de l'API Zappos. C'est valide.

PrintWriter out = resp.getWriter();
String jsonString = null;
URL url = new URL("http://api.zappos.com/Search?term=boots&key=my_key");
InputStream inputStream = url.openConnection().getInputStream();
resp.setContentType("application/json");

JSONSerializer jsonSerializer = new JSONSerializer();
try {
   jsonString = jsonSerializer.toJSON(inputStream);
} catch (MarshallException e) {
 e.printStackTrace();
    }
out.print(jsonString);

Je reçois l'exception mentionnée ci-dessous:

com.metaparadigm.jsonrpc.MarshallException: can't marshall Sun.net.www.protocol.http.HttpURLConnection$HttpInputStream
    at com.metaparadigm.jsonrpc.JSONSerializer.marshall(JSONSerializer.Java:251)
    at com.metaparadigm.jsonrpc.JSONSerializer.toJSON(JSONSerializer.Java:259)
    at Communicator.doGet(Communicator.Java:33)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:740)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:853)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:247)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:193)
    at filters.ExampleFilter.doFilter(ExampleFilter.Java:149)
11
Margi

Utilisez l’analyseur JSON de Jackson.

Référez-vous - Jackson Home

La seule chose que vous devez faire - 

ObjectMapper mapper = new ObjectMapper();
Map<String, Object> jsonMap = mapper.readValue(inputStream, Map.class);

jsonMap contiendra maintenant le JSON.

36
Vishal Pawale

ObjectMapper.readTree (InputStream) vous permet d’obtenir JSON imbriqué avec JsonNodes. 

public void testMakeCall() throws IOException {
    URL url = new URL("https://api.coindesk.com/v1/bpi/historical/close.json?start=2010-07-17&end=2018-07-03");
    HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
    httpcon.addRequestProperty("User-Agent", "Mozilla/4.0");
    InputStream is = httpcon.getInputStream();

    try {
        ObjectMapper mapper = new ObjectMapper();
        JsonNode jsonMap = mapper.readTree(is);
        JsonNode bpi = jsonMap.get("bpi");
        JsonNode day1 = bpi.get("2010-07-18");

        System.out.println(bpi.toString());
        System.out.println(day1.toString());
    } finally {
        is.close();
    }
}

Résultat:

{"2010-07-18": 0.0858, "2010-07-19": 0.0808, ...}

0,0858

0
Philip Rego