web-dev-qa-db-ja.com

androidでjsonオブジェクトをfirebaseに保存しています

私はFirebaseを使い始めたばかりで、jsonオブジェクトデータをFirebaseに入れようとしています。データをクラスオブジェクトとしてfirebaseに配置する方法を知っていますが、jsonオブジェクトデータを配置したいと思います。

Jsonオブジェクトデータをpojoに変換せずにFirebaseに配置する方法はありますか?

9
shj

質問に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);

シンプル!

1
Reaz Murshed

はい、これを達成できます。まず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);
8
GraSim

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);
6
Emin Ayar

ここで提案されているように: 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);
3

Kotlinでのソリューション自動変換はコンパイル時のエラーで変換するため、次のように言います: 「KotlinとAndroidでパラメータTを推測するには情報が不十分です

val jsonMap = Gson().fromJson<Any>(stringJson, object : TypeToken<HashMap<String, Any>>() {}.type)
2
AndyGeek