我在Android操作系统中的Android应用本机JSON-Library中使用。它工作正常,但有一件事让我发疯。忽略Android中JSON-Keys的情况
如果服务器界面的变化,并给出几乎相同的答案,但关键符号会有点不同(例如examplekeyofmyapp和exampleKeyOfMyApp)我有一个问题。
有没有办法忽略键的情况?
或者也许您的任何人对这些情况使用了解决方法?
谢谢
我在Android操作系统中的Android应用本机JSON-Library中使用。它工作正常,但有一件事让我发疯。忽略Android中JSON-Keys的情况
如果服务器界面的变化,并给出几乎相同的答案,但关键符号会有点不同(例如examplekeyofmyapp和exampleKeyOfMyApp)我有一个问题。
有没有办法忽略键的情况?
或者也许您的任何人对这些情况使用了解决方法?
谢谢
,如果你已经实施了代码这样
jsonobject.get(examplekeyofmyapp)
;
然后修改你的代码。只需将json字符串更改为小写。
jsonString.toLowerCase()
。多数民众赞成它,所有大写将转换为小写。
我面临同样的问题,我发现的最佳解决方案是检查您的密钥是否有可用的值。
你仍然必须检查你认为你可能有的所有可能的情况。
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。 希望它可以帮助
我知道这是一个几年的历史,但我想我的解决方案可以帮助别人:
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);
很明显,你可以改变“获得()”到其他类型的获得方法
我有用于处理错误的每种类型的核心方法,例如
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 "";
}
}
一旦你把所有做出的类型,它可以更容易处理空白或遗漏值
我希望这可以帮助别人:)
我也想过这个解决方案,但它不是正确对象,真爱。因为所有的信息都将被转换为小写字母,也包括那些在价值中的信息。但是如果我不被允许转换它们呢?! – Tima 2011-03-16 10:02:54
然后唯一的解决方案是缺少它forexamplekeyofmyapp,如果这个关键不存在然后检查exampleKeyOfMyApp。如果可用,请检查更多组合。 – 2011-03-16 10:39:47
我还想过这件事。但它会使一切都变得复杂。但是,谢谢你的建议 – Tima 2011-03-16 11:39:51