How to ignore case when searching a JSON Object

java, json, json-simple

Solution

If you have to perform this case-insensitive lookup many times, I'd just write a method to do that lookup:

public Object getIgnoreCase(JSONObject jobj, String key) {

    Iterator<String> iter = jobj.keySet().iterator();
    while (iter.hasNext()) {
        String key1 = iter.next();
        if (key1.equalsIgnoreCase(key)) {
            return jobj.get(key1);
        }
    }

    return null;

}

Problem

My sample JSON input is as follows: ``` "JobName":"Test Job 1", "events":[ { "features":[], "InputHiveTable":"uilog_uiclientlogdata", "eventColumn":"command", "name":"edu.apollogrp.classroom.discussion.client.events.CreateDiscussionEvent" }, ``` Consider the field `"InputHiveTable"`, it could be in all uppercase `INPUTHIVETABLE`, all lowercase `inputhivetable`, or a mixture of both as it is now. Currently, I'm reading the field as follows (in Java): ``` JSONObject jsonObject = (JSONObject) obj; JSONArray events = (JSONArray) jsonObject.get("events"); String InputHiveTable = (String)event.get("InputHiveTable"); ``` So my question is how do I search for the field `"InputHiveTable"` while ignoring the case. I'm using JSON Simple libraries.

Original source