私はFirebaseを使い始めたばかりで、jsonオブジェクトデータをFirebaseに入れようとしています。データをクラスオブジェクトとしてfirebaseに配置する方法を知っていますが、jsonオブジェクトデータを配置したいと思います。
Jsonオブジェクトデータをpojoに変換せずにFirebaseに配置する方法はありますか?
質問にAndroid=とタグを付けたので、AndroidクライアントからFirebaseデータベースにデータを入れたいと思います。
JSONデータがいくつかあり、それをFirebaseデータベースに格納したいですか?これは、それを実行するための段階的な手順です。
なぜPOJOを避けようとしているのか、本当にわかりません。全体の操作がより簡単になります。次に、JSON文字列があるとします。 JSONをJavaクラスにマッピングして、Firebaseに直接配置する必要があります。Firebaseは、データをJSONのような形式で保存し、簡単に理解できます。
私は Gson を使用して、JSON文字列を特定のJavaオブジェクトにマッピングします。これまでに見つけた最も簡単な方法は、数行のコーディングを必要とします。
Gson gson = new Gson();
YourPOJO myPOJO = gson.fromJson(jsonString, YourPOJO.class);
これで、JSON文字列がmyPOJO
オブジェクトに正常にマッピングされました。これで、このオブジェクトをFirebaseデータベースに配置する準備ができました。
Firebaseデータベースへの参照を取得してから、データを配置する特定のノードでsetValue
を呼び出します。
Firebase ref = new Firebase(YOUR_FIREBASE_REF);
ref.setValue(myPOJO);
シンプル!
はい、これを達成できます。まずjsonを文字列に変換してから、次の手順を実行します。
String jsonString; //set to json string
Map<String, Object> jsonMap = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, Object>>() {}.getType());
JSONオブジェクトを子オブジェクトのルートに直接追加したいので、「updateChildren」メソッドを使用しています。
firebaseDatabaseRef.child("users").child(uid).updateChildren(jsonMap);
気にしない、または新しいノードを設定したい場合は、
firebaseDatabaseRef.child("users").child(uid).child({your new node}).setValue(jsonMap);
JSON値をFirebaseに保存するのも簡単です。 Firebaseリファレンスを呼び出したとしましょう
Firebase ref = new Firebase("https://docs-examples.firebaseio.com/Android/saving-data/fireblog");
次に、Map
オブジェクトを使用してデータを渡します。 Map
はキーで値を保持します。あなたの場合、String
キーとJSONObject
値があります。
Firebase userRef = ref.child("user");
Map<String, JSONObject> userMap= new HashMap<String, JSONObject>();
JSONObject tempObject = new JSONObject();
try{
tempObject.put("birthday","1992");
tempObject.put("fullName","Emin AYAR");
}catch(Exception e){
e.printStackTrace();
}
userMap.put("myUser", tempObject);
userRef .setValue(userMap);
ここで提案されているように: JSON文字列をHashMapに変換
jsonオブジェクト/文字列をMap<String, Object>
に簡単に変換できます(POJOを作成する必要さえありません)。
Firebase ref = new Firebase(YOUR_FIREBASE_REF);
Map<String, Object> map = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, Object>>() {}.getType());
ref.setValue(map);
Kotlinでのソリューション自動変換はコンパイル時のエラーで変換するため、次のように言います: 「KotlinとAndroidでパラメータTを推測するには情報が不十分です
val jsonMap = Gson().fromJson<Any>(stringJson, object : TypeToken<HashMap<String, Any>>() {}.type)