2016-12-20 5 views
1

Mein Firebase-Datenbankspeicherformat wie folgt.Entfernen von DataSnapshot von Firebase setValue()

{ 
    key=3553: 3223, 
    value={ 
     -KZMFwmCYKevESD6qtjD={ 
      text=Hello I am, 
      timestamp=[ 
       .sv: timestamp 
      ], 
      imageUrl=, 
      senderId=yDapbI755tOD72ivfsdferOv1RIHMnAe03 
     } 
    } 
} 

aber zum eingestellten Wert in der Firebase-Datenbank zu speichern, mache ich so.

String Temp = "{timestamp: [.sv: timestamp], imageUrl: , senderId: " + Utils.SET_HEADER_ID + ", text: " + strMessage + "}"; 
System.out.println("===== Temp String : " + Temp); 

String key = mFirebaseDatabaseReference.child("threads/3333:3333").push().getKey(); 
mFirebaseDatabaseReference.child("threads/3333:3333").child(key).setValue(Temp); 

Wie ich oben Code schrieb habe ich Daten in Firebase-Datenbank hinzugefügt. Aber es wird automatisch DataSnapshot JsonObject am Anfang meiner einfügen Datenbankformat wie folgt, was falsch ist.

DataSnapshot{ 
    key=3333: 3333, 
    value={ 
     -KZPfTKJhaCC4RkIj45P={ 
      timestamp: [ 
       .sv: timestamp 
      ], 
      imageUrl: , 
      senderId: yDapbI755tOD72ivOv1RIHMnAe03, 
      text: hiiiiiiiii 
     } 
    } 
} 

Wie kann ich diese DataSnapshot aus einfügen Format von Firebase entfernen?

Antwort

1

Sie können einen unverarbeiteten JSON-Wert nicht an Firebase übergeben. Sie werden stattdessen die Datenstruktur in Ihrem Code erstellen müssen:

Map<String,String> map = new HashMap<String,String>(); 
map.put("timestamp", Firebase.Database.ServerValue.TIMESTAMP); 
map.put("imageUrl", "an actual image URL, which is missing from your question"); 
map.put("senderId", Utils.SET_HEADER_ID); 
map.put("text", strMessage); 

mFirebaseDatabaseReference.child("threads/3333:3333").child(key).setValue(map); 

Alternativ Sie eine Bibliothek wie Jackson verwenden können, das JSON-Intro die erforderliche verschachtelte Map-Struktur zu konvertieren. Siehe zum Beispiel Nested Json to Map using Jackson.

Verwandte Themen