Retrieving Values from Nested JSON Objects in Java: A Comparative Study of json-simple and JSON-Java Libraries

Dec 03, 2025 · Programming · 12 views · 7.8

Keywords: Java | JSON Parsing | Nested Objects

Abstract: This article explores methods for parsing nested JSON objects and retrieving specific values in Java, focusing on the use of json-simple and JSON-Java libraries. Through a concrete example, it demonstrates how to extract key-value pairs from JSON files and analyzes technical details of iteration and direct access. Based on Stack Overflow Q&A data, the article integrates best practices, provides code examples, and offers performance recommendations to help developers handle JSON data efficiently.

Introduction

In Java development, JSON (JavaScript Object Notation) is widely used as a lightweight data interchange format in web services and data storage. Parsing nested JSON objects to retrieve specific values is a common task, but different library implementations can affect code readability and efficiency. Based on a Stack Overflow Q&A case, this article delves into how to use json-simple and JSON-Java libraries to extract values from nested JSON, discussing related technical details.

Problem Context and Data Example

Assume we have a JSON file (named "myfile") with the following structure:

{
    "LanguageLevels": {
        "1": "Początkujący",
        "2": "ŚrednioZaawansowany",
        "3": "Zaawansowany",
        "4": "Ekspert"
    }
}

The goal is to retrieve the value "ŚrednioZaawansowany" corresponding to the key "2". Initial code uses the json-simple library, but the developer is stuck at the iteration step.

Limitations of the json-simple Library

json-simple is an older Java JSON processing library with infrequent updates in recent years, which may lead to compatibility and functional limitations. In the provided code, the developer has successfully parsed the JSON and obtained the nested object:

JSONObject jsonObject = (JSONObject) obj;
JSONObject jsonChildObject = (JSONObject)jsonObject.get("LanguageLevels");

However, json-simple's API design is basic, requiring manual iteration or type casting to access values. For example, iteration can be done using Map.Entry, as shown in Answer 3:

for (Map.Entry entry : jsonChildObject.entrySet()) {
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

But this method may be inefficient when only a specific key is needed.

Solution with the JSON-Java Library

Answer 1 recommends using the JSON-Java library (also known as org.json), an actively maintained open-source project with a more intuitive API. The following code demonstrates direct value retrieval:

String JSON = "{\"LanguageLevels\":{\"1\":\"Pocz\u0105tkuj\u0105cy\",\"2\":\"\u015arednioZaawansowany\",\"3\":\"Zaawansowany\",\"4\":\"Ekspert\"}}
";
JSONObject jsonObject = new JSONObject(JSON);
JSONObject getSth = jsonObject.getJSONObject("LanguageLevels");
Object level = getSth.get("2");
System.out.println(level);

JSON-Java uses the getJSONObject() method to directly obtain nested objects, avoiding type casting, and the get() method to retrieve values, resulting in cleaner and more maintainable code.

In-Depth Analysis: Iteration vs. Direct Access

In nested JSON processing, iteration and direct access are two primary strategies. Answer 2 uses the Google Geocoding API as an example to demonstrate deep iteration:

JSONObject json = new JSONObject(output.toString());
JSONArray result = json.getJSONArray("results");
JSONObject result1 = result.getJSONObject(0);
JSONObject geometry = result1.getJSONObject("geometry");
JSONObject locat = geometry.getJSONObject("location");
double lat = locat.getDouble("lat");
double lng = locat.getDouble("lng");

This approach is suitable for complex nested structures but may increase code complexity. In contrast, JSON-Java's direct access is more efficient for simple scenarios. Developers should choose the appropriate method based on data structure: prefer direct access for shallow nesting with known keys, and consider iteration or recursion for unknown or deep nesting.

Performance and Best Practices Recommendations

Conclusion

By comparing json-simple and JSON-Java libraries, this article presents effective methods for retrieving values from nested JSON objects in Java. JSON-Java is preferred for its concise API and ongoing updates, while iteration strategies apply to complex scenarios. Developers should select appropriate tools and techniques based on specific needs to enhance code quality and performance. As JSON standards evolve, library optimizations will further improve data processing efficiency.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.