Vérifier si une clé existe ou non dans une étude JSON

Je suis coincé dans une situation où j'ai besoin de vérifier si une clé existe dans un imbriquée objet JSON. Par imbriquée Objet JSON que je vais avoir un objet JSON à l'intérieur de la mère d'objet JSON que la valeur de l'un de ses clés. J'ai donc besoin de vérifier si cette clé existe dans l'ensemble de l'objet JSON. Je suis au-dessous de données comme un String objet. Je sais que je peux analyser ce String objet pour obtenir l'objet JSON.

{
"claim_loss_type_cd": "TEL",
"claim_type": "002",
"claim_reason": "001",
"policy_number": "1234kk3366ff664",
"info": {
    "ApplicationContext": {
        "country": "US"
    }
  }
}

J'ai utilisé containsKey() méthode de vérification de la clé de l'existence dans le principal objet JSON et il fonctionne. Mais pour la vérification de tous les internes objet JSON comme "info" j'ai besoin d'analyser cette Object encore pour objet JSON, puis vérifiez à nouveau la touche.

        String jsonString = "My JSON String here";
        JSONObject finalResponse = new JSONObject(jsonString);
        finalResponse.containsKey("country"); //will return false
        JSONObject intermediateResponse = (JSONObject)finalResponse.get("info");
        intermediateResponse.containsKey("country"); //will return true

Si il ya une meilleure façon, une API ou une méthode qui peut vérifier à l'intérieur de tous les internes objet JSON aussi bien sans la nécessité de l'analyse de l'interne de l'objet JSON. Je suis à l'aide de com.ibm.json.java.JSONObject.JSONObject() natif IBM bibliothèque de Websphere Application Server et Aucune autre JSON analyseurs je suis à l'aide.

En considérant JSON, comme "claim_type" est une des clés de parents d'objet JSON, mais "d'infos", en soi, un objet JSON.
Donc, ce que j'ai à faire est de vérifier si une clé existe dans complet JSON, que ce soit dans la société mère ou de son enfant objet JSON clés comme "pays" ici en exemple.

EDIT:

Grâce à @chsdk je suis arrivé à une solution. Mais si quelqu'un d'autre est venu à la solution à l'aide d'une autre API, s'il vous plaît répondre, parce que ci-dessous la solution est de prendre la récursivité en compte & pourrait avoir un grand Espace/Temps de la Complexité.

public static boolean checkKey(JSONObject object, String searchedKey) {
    boolean exists = object.containsKey(searchedKey);
    if(!exists) {      
         Set<String> keys = object.keySet();
         for(String key : keys){
             if ( object.get(key) instanceof JSONObject ) {
                    exists = checkKey((JSONObject)object.get(key), searchedKey);
            }
         }
    }
    return exists;
}
  • avez-vous utilisé l'un parser JSON comme jakson etc ?
  • Les gars, JSON (le mot) n'est pas du code, de ne pas les mettre en forme dans un bloc de code..
  • quelqu'un m'a suggéré que JSON de mak comme le Code, j'ai donc accepté cette suggestion pour modifier
  • Si vous avez le JSON sous la forme d'une chaîne brute, peut-il être vérifié par rapport à la regex \"country\"\s*: ?
  • non, je ne suis pas à l'aide de toutes les analyseurs supplémentaires
InformationsquelleAutor Ankit Nigam | 2015-06-25