1

I am working on a use case where I need to parse different JSON strings and query for specific fields basing on the "type" of the JSON. The "type" is a field in the JSON string.

I am using Jackson API to perform this task after going through the blogs and benchmarks, as it is the fastest.

I am able to parse the JSON and achieve what I want but the issue is with the performance.

public String generate(String inputJson, List<String> idParams,final String seperator) throws Exception {
        JsonNode node;
        StringBuilder sb = new StringBuilder();
        try {
            node = new ObjectMapper().readTree(new StringReader(inputJson));
            idParams.forEach(e -> {
                String value = node.findValue(e).asText();
                sb.append(value).append(seperator);
            });
        } catch (Exception e) {
            throw e;
        }

        return sb.toString();
    }

In the above method, I am getting the field details as a List. With the help of forEach(), i am able to fetch the values by finding using the fields.

The culprit is the list iterator as I have to search the whole json tree to find the value for each element. Is there a better approach to optimize. I would also like to get the inputs on other JSON parsing libraries which can improve the performance here.

I am also thinking of parsing the whole json once and writing the Keys and Values to a HashMap. But, I have very few fields which i really care about the remaining fields are not needed.

2 Answers 2

1

take a look at JsonPath . It offers xpath-like rich query language that allows for search and retrieval of individual or few elements from the JSON tree.

Sign up to request clarification or add additional context in comments.

Comments

0

Consider using Jackson Streaming API -

https://github.com/FasterXML/jackson-docs/wiki/JacksonStreamingApi

Take a look at this example - http://www.baeldung.com/jackson-streaming-api

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.