在 Android 中将 JSON 个对象保存到 Firebase

Saving JSON object to Firebase in Android

我是 Firebase 的新手,我正在尝试将 JSON 对象数据放入我的 Firebase。 我知道如何将数据作为 class 对象放入 Firebase,但我想将 JSON 对象数据放入。

有没有什么方法可以将 JSON 对象数据放入 Firebase 而无需将其转换为 POJO?

在 firebase 上也保存 JSON 值 就是这么简单。假设您已经调用了您的 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);

由于您在问题中标记了 android,所以我猜您想从 Android 客户端将一些数据放入您的 firebase 数据库中。

您有一些 JSON 数据,您希望将其存储在 firebase 数据库中,对吗?这是完成它的分步过程。

我真的不知道你为什么要避免使用 POJO。它使整个操作更加简化。现在让我们假设您有一个 JSON 字符串。您需要将 JSON 映射到 java class 以将其直接放入 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);

简单!

这里建议:Convert a JSON String to a HashMap

您可以轻松地将 json object/string 转换为 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);

是的,你可以做到这一点。首先将 json 转换为字符串,然后执行以下操作:

  String jsonString; //set to json string
  Map<String, Object> jsonMap = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, Object>>() {}.getType());

我正在使用 "updateChildren" 方法,因为我想将 JSON 对象直接添加到我的子对象的根目录中

  firebaseDatabaseRef.child("users").child(uid).updateChildren(jsonMap);

如果您不在意或想设置一个新节点,请使用

 firebaseDatabaseRef.child("users").child(uid).child({your new node}).setValue(jsonMap);

Kotlin 中的解决方案 因为自动转换转换它时出现编译时错误提示:

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