Convert InputStream into JSON

前端 未结 3 1506
不知归路
不知归路 2020-12-16 11:31

I am using json-rpc-1.0.jar.Below is my code. I need to convert InputStream object into JSON since the response is in JSON.

I did verify the json response obtained f

相关标签:
3条回答
  • 2020-12-16 12:06

    Make use of Jackson JSON parser.

    Refer - Jackson Home

    The only thing you need to do -

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

    Now jsonMap will contain the JSON.

    0 讨论(0)
  • 2020-12-16 12:11

    Better to save memory by having output as Stream<JsonNode>

    
        private fun InputStream.toJsonNodeStream(): Stream<JsonNode> {
            return StreamSupport.stream(
                    Spliterators.spliteratorUnknownSize(this.toJsonNodeIterator(), Spliterator.ORDERED),
                    false
            )
        }
    
        private fun InputStream.toJsonNodeIterator(): Iterator<JsonNode> {
            val jsonParser = objectMapper.factory.createParser(this)
    
            return object: Iterator<JsonNode> {
    
                override fun hasNext(): Boolean {
                    var token = jsonParser.nextToken()
                    while (token != null) {
                        if (token == JsonToken.START_OBJECT) {
                            return true
                        }
                        token = jsonParser.nextToken()
                    }
                    return false
                }
    
                override fun next(): JsonNode {
                    return jsonParser.readValueAsTree()
                }
            }
        }
    
    
    0 讨论(0)
  • 2020-12-16 12:26

    ObjectMapper.readTree(InputStream) easily let's you get nested JSON with 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();
        }
    }
    

    Result:

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

    0.0858

    0 讨论(0)
提交回复
热议问题