20-25のような値がさらに多い場合、値が4〜5のときは軽いです。一部のデータ構造で必要なすべてのキーをハードコードできれば助かります。たとえば、あなたのケースで必要なすべてのキーは、SID、rnumber、名前、dayscholarなど
あるあなたの鍵のために別々のハードコードされたデータ構造体をキープ
org.json.JSONObject jsonObject = new org.json.JSONObject();
java.util.Map<String , Object> otherMap = new java.util.HashMap<>();
String[] myLovedKeys = {"sid" , "rnumber" , "name" , "dayscholar" , "stream" , "section"};
for(int x = 0; x < myLovedKeys.length; x++)
{
if(myLovedKeys[x].equals("dayscholar") || myLovedKeys[x].equals("stream"))
{
String value = "";
if(myLovedKeys[x].equals("dayscholar"))
{
value = json.optString(myLovedKeys[x] , "false");
jsonObject.put(myLovedKeys[x] , value);
otherMap.put(myLovedKeys[x] , value);
}
else
{
value = json.optString(myLovedKeys[x] , ""); // stream key-value
jsonObject.put(myLovedKeys[x] , value);
otherMap.put(myLovedKeys[x] , value);
}
}
else
{
String keyValue = json.getString(myLovedKeys[x]);
jsonObject.put(myLovedKeys[x] , keyValue);
otherMap.put(myLovedKeys[x] , keyValue);
}
}
これは、あなたが正確に現在あるキーを知ることができますループの内部で処理され、扱うキーに応じて多様な動作を扱うことができます
私がJSONObjectとjava.util.Mapを宣言した理由は、単純に事実を詳しく説明したいからですorg.json。*ライブラリがない場合は、java.util.Mapを使用して簡単に取り除くことができますが、 org.json *ライブラリを持っていれば、より快適な方法で問題に対処することもできます。今
otherMap.put(myLovedKeys[0] , "SomeValue");
otherMap.put(myLovedKeys[1] , "Other Value");
otherMap.put("sid" , "SomeValue");
otherMap.put("rnumber" , "toSomeName");
//myLovedKeys[0] = "sid" , myLovedKeys[1] = "rnumber"
同様にあなたには、いくつかの変更が反映することができますが、それらの値を変更し、更新することができ、我々は我々が簡単に同様に
for(int x = 0; x < myLovedKeys.length; x++)
{
System.out.println("java.util.Map: [" myLovedKeys[x] + "=" + otherMap.get(myLovedKeys[x]));
System.out.println("org.json.JSONObject: " + myLovedKeys[x] + "=" + jsobObject.getJSONObject(myLovedKeys[x]));
}
のようなものを試みることができるし、データにアクセスすることを望んでいたと言うことができます
jsonObject変数にあります。あなたが気づかなければならないことは、あなたのコードのどこかにすべてのキー名をハードコーディングするという苦痛に対処しなければならないということです。それはいくつかの入力を取るでしょう:)あなたのケース
データバインディングをサポートするJSONライブラリを使用することをお勧めします(JavaオブジェクトをJSONに自動的に変換して戻す)。 JacksonとGsonは最も人気のある2人です。 – dnault
車輪を改造しないでください - あなたが見つけたように、車輪は通常正方形になります。まともなシリアライゼーションライブラリ(Jackson、GSON)を使用して、JavaクラスをJSONに変換して戻してください.Java Beansを使用すると、どちらのコードも2行で終了するはずです。あなたは現在のアプローチよりも(Base64エンコードされた)Javaシリアル化を使う方が良いでしょう。 –