Convertir InputStream en JSON

Estoy usando json-rpc-1.0.tarro.A continuación es mi código. Necesito convertir InputStream objeto en JSON ya que la respuesta está en JSON.

Me hizo comprobar la respuesta en json obtenidos a partir de Zappos API. Es válido.

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);

Me sale el siguiente mencionada excepción:

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)
Primero de todo, setContentType() debe ser llamada antes de enviar la solicitud, es decir,. antes de getInputStream().
Y tu post completo seguimiento de la pila.

OriginalEl autor Margi | 2013-09-13

2 respuestas

  1. 35

    Hacer uso de Jackson JSON parser.

    Consulte – Jackson Casa

    La única cosa que usted necesita hacer –

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

    Ahora jsonMap contendrá el JSON.

    Ok. Se parece a la de Jackson página de Inicio que usted les pidió que se refieren, es VIEJO Jackson Java JSON-procesador de la Página de Inicio. He descargado jackson-core-2.2.3.jar. No parece tener ObjectMapper Clase.
    Sí..Que se han desplazado a fasterxml.com. Por CIERTO, usted necesita para descargar Core, Anotación & Databind frascos.
    ¿Le está ayudando?
    Estoy frente a errores de compilación en Tomcat 4.1.27 servidor.
    ¿Cuál es el error que se le está dando?

    OriginalEl autor

  2. 0

    ObjectMapper.readTree(InputStream) fácilmente vamos a obtener anidada JSON con 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();
        }
    }

    Resultado:

    {“2010-07-18″:0.0858,”2010-07-19”:0.0808,…}

    0.0858

    OriginalEl autor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *