忽略Android中JSON-Keys的大小写

时间:2011-03-16 09:22:03

标签: android json

我在Android OS中的Android应用程序原生JSON-Library中使用。它工作正常,但有一件事让我发疯。

如果服务器界面发生变化并给出几乎相同的答案,但密钥表示法会有所不同(例如 examplekeyofmyapp exampleKeyOfMyApp ),则会出现问题。

有没有办法忽略钥匙的情况?

或许你们中的任何人都可以针对这些案例使用解决方法?

谢谢

3 个答案:

答案 0 :(得分:0)

如果你已经实现了这样的代码
jsonobject.get(examplekeyofmyapp);
然后修改你的代码。只需将json String更改为小写。

jsonString.toLowerCase()。就是这样,所有大写都将转换为小写。

答案 1 :(得分:0)

我遇到了同样的问题,我找到的最佳解决方案是检查您的密钥是否具有可用值。

您仍然需要检查您认为可能存在的所有案例。

String TAG_URL_LOWER_CASE = "url";
String TAG_URL_UPPER_CASE = "URL";

String urlValue = "";
if (!obj.isNull(TAG_URL_LOWER_CASE)) {
    urlValue = obj.getString(TAG_URL_LOWER_CASE);
} else if (!obj.isNull(TAG_URL_UPPER_CASE)) {
    urlValue = obj.getString(TAG_URL_UPPER_CASE);
}

如果您的密钥没有与您的密钥关联的值,您还将避免JsonException。 希望它有所帮助

答案 2 :(得分:0)

我知道这已经有几年了,但我认为我的解决方案可能有助于其他人:

String keyName = null;
for(Iterator<String> iter = jsonData.keys(); iter.hasNext();) {
    String key = iter.next();
    if (key.equalsIgnoreCase(jsonVar)) {
        keyName = key;
        break;
    }
}
jsonData.get(keyName);

显然你可以改变&#34; get()&#34;到其他类型的get方法

我有用于处理错误的每种类型的核心方法,例如

public static String getJSONString(JSONObject jsonData, String jsonVar) {
    // start with a blank name
    String keyName = null;
    // loop through they keys to find the correct spelling
    for(Iterator<String> iter = jsonData.keys(); iter.hasNext();) {
        String key = iter.next();
        if (key.equalsIgnoreCase(jsonVar)) {
            keyName = key;
            break;
        }
    }
    // if the key isn't found, return a null
    if (keyName == null) {
        return keyName;
    }
    // need a try/catch around JSON stuff as the variable could be the wrong type or not exist
    try {
        return jsonData.getString(keyName);
    }
    catch (Exception e) {
        // log the variable & the error
        Log.w("getJSONString", "failed to getJSONstring "+jsonVar+" - "+e.toString());
        // return an empty string because the "get" failed
        return "";
    }
}

完成所有类型后,可以更轻松地处理空白或缺失值

我希望这有助于某人:)