import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class JsonProcessor {
public static List<String> processJson(String jsonString) {
List<String> results = new ArrayList<>();
try {
JSONObject jsonObject = new JSONObject(jsonString);
// Example: Accessing nested data with error handling
String name = (String) jsonObject.get("person", "name"); // Default to "name" if "person" is missing
if (name != null) {
results.add("Name: " + name);
} else {
results.add("Name: Not found");
}
JSONObject personDetails = jsonObject.getJSONObject("person");
String age = (String) personDetails.get("age"); //Default value if missing
if (age != null) {
results.add("Age: " + age);
} else {
results.add("Age: Not found");
}
// Example: Handling array of objects
JSONArray items = jsonObject.getJSONArray("items");
if (items != null) {
for (int i = 0; i < items.length(); i++) {
JSONObject item = items.getJSONObject(i);
String itemName = item.getString("name");
if (itemName != null) {
results.add("Item " + (i + 1) + ": " + itemName);
} else {
results.add("Item " + (i + 1) + ": Name not found");
}
}
} else {
results.add("Items: Not found");
}
} catch (Exception e) {
// Graceful failure handling
System.err.println("Error processing JSON: " + e.getMessage());
results.add("Error: JSON processing failed - " + e.getMessage());
}
return results;
}
public static void main(String[] args) {
String json = "{\"person\": {\"name\": \"Alice\", \"age\": \"30\"}, \"items\": [{\"name\": \"Apple\"}, {\"name\": \"Banana\"}]}";
List<String> output = processJson(json);
for (String line : output) {
System.out.println(line);
}
// Example with missing data and invalid JSON
String json2 = "{\"person\": {\"age\": \"30\"}, \"items\": [{\"name\": \"Apple\"}, ]}"; //Missing name in last item
List<String> output2 = processJson(json2);
for (String line : output2) {
System.out.println(line);
}
String invalidJson = "{\"person\": {\"name\": \"Alice\", \"age\": \"30\""; //invalid JSON
List<String> output3 = processJson(invalidJson);
for (String line : output3) {
System.out.println(line);
}
}
}
Add your comment