在安卓中将JSON对象保存到Firebase

12

我是新手使用 Firebase,我想将 JSON 对象数据放入 Firebase 中。我知道如何将类对象作为数据放入 Firebase,但我想放入 JSON 对象数据。

是否有一种方法可以将 JSON 对象数据放入 Firebase 而不将其转换为 POJO?


我认为如果没有POJO,将数据存储到Firebase中会非常困难...... - sushildlh
Firebase将数据保存为JSON格式,但为什么我不能将数据保存为JSON格式? - inin
你能否发布一份你想要存储在Firebase中的JSON数据? - Reaz Murshed
@shj 请看我的回答,你可以使用 Firebase 中的“导入 JSON”选项将任何 JSON 数据保存在 Firebase 中。 - Kathi
Java没有本地格式来表示JSON。您有什么格式的JSON数据?如果是Map<String,Object>,那么您可以像处理POJO一样将其传递到ref.setValue()中(就像Emin回答的那样)。 - Frank van Puffelen
我认为这是同一个问题,我使用了它的答案。 - josue.0
5个回答

10

可以实现。首先将您的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);

1
刚刚注意到另一个帖子使用了相同的方法,我会保留我的答案,因为它提供了有关如何在Firebase DB中设置JSON对象的其他信息。 - GraSim

6

在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);

在Firebase数据库中使用键名myUser是否有增加价值? - Satyam Gondhale

4

如此建议:将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);

2

根据您在问题中标记的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);

简单!

2

Kotlin 解决方案,因为自动转换会在编译时出现错误,提示“无法推断参数 T 的足够信息”,请参考:Kotlin 和 Android 中无法推断参数 T 的足够信息

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接