Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use custom JSON serializers with firebase

Is it possible to get JsonObjects or strings in Json format when using DataSnapshot.getValue()? Maybe I wasn't thorough enough with my search, but I couldn't find a way to use a custom serializer.

like image 241
Vinay Nagaraj Avatar asked Feb 17 '16 22:02

Vinay Nagaraj


1 Answers

Update: I haven't had the time for checking out the documentation for the latest SDK but it seems like there are some options for JSON fields.


The getValue() in DataSnapshot returns a HashMap. So in any method of your Firebase listener, you could:

  1. Get the value of the DataSnapshot, which will return a HashMap:

    HashMap<String, JSONObject> dataSnapshotValue = (HashMap<String, JSONObject>) dataSnapshot.getValue();
    
  2. Cast the Hashmapto a valid JSON string, using Gson:

    String jsonString = new Gson().toJson(dataSnapshotValue);
    
  3. With this valid jsonString, cast it as needed:

    final GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.registerTypeAdapter(User.class, new UserSerializer());
    final Gson gson = gsonBuilder.create();
    User parsedUser = gson.fromJson(jsonString, User.class);
    

This gives you the possibility to use anything you want to cast an object from Firebase, you could either use custom serializers, an ExclusionStrategy, or retrieve some values from the HashMap directly.

like image 123
RominaV Avatar answered Sep 18 '22 16:09

RominaV