2011-03-16 68 views
0

Android OSのAndroidアプリケーションのネイティブJSON-Libraryで使用しています。それはうまく動作しますが、1つのことは私を狂ってしまいます。AndroidのJSONキーの大文字小文字を無視します。

サーバインタフェースが変更された場合とほぼ同じ答えを与えるが、キーの表記は、私は問題を抱えている(例えばexamplekeyofmyappexampleKeyOfMyApp)ビットは異なるであろう。

キーの大文字小文字を無視する方法はありますか?

あなたの誰かがこれらのケースで回避策を使用しているのでしょうか?

あなたは
jsonobject.get(examplekeyofmyapp)次のようにコードを実装していた場合

答えて

0

ありがとう。
次にコードを修正してください。単純にjson Stringを小文字に変更します。

jsonString.toLowerCase()。 thats、すべての大文字は小文字に変換されます。

+0

私はこのソリューションについても考えたが、それはありません合っているもの。すべての情報が小文字に変換されるため、値にある情報も小文字に変換されるためです。しかし、もし私がそれらを変換することを許可されていないのですか? – Tima

+0

このキーが存在しない場合、forexamplekeyofmyappは唯一の解決策です。そうでない場合は、exampleKeyOfMyAppを確認してください。可能であれば、より多くの組み合わせを確認してください。 –

+0

私はそれについても考えました。しかしそれはすべてを複雑すぎるものにするでしょう。しかし、あなたの提案に感謝 – Tima

0

私は同じ問題に直面しました。私が見つけた最良の解決策は、あなたのキーに利用可能な値があるかどうかをチェックすることです。

考えられる可能性のあるすべてのケースを確認する必要があります。

キーに関連付けられている値がキーにない場合は、JsonExceptionも回避します。 は、それは私が、これは数年前ですけど、私は私の解決策は、他の人を助けるかもしれないと思っ

+0

あなたのケースはあまりにも単純です。単にnewTweetsUrlというキーを想像してみてください(ちょっとした例です)。 NEWTWEETSURLまたはnewtweetsUrlを持つことができます。また、nEwtWEEtsUrLのような狂気のサーバー実装がある場合もあります。 – Tima

+0

私は管理するいくつかのケースがあることを知っています。そういうわけで、私はあなたが "あなたが持つ可能性のあるすべての可能性のある事例"を精緻化しました。ほとんどの場合、識別されたケース(完全な大文字、完全な小文字、最初の大文字)があります。私はより良い解決策にはオープンしていますが、それをすぐに見つけることができませんでした – Seynorth

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); 

明らかにあなたが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 ""; 
    } 
} 

は、それはそれが簡単に空白または欠損値に

を扱うようになり、私はこれが誰かの役に立てば幸い:)

関連する問題