在Android中将JSON对象保存到Firebase

在Android中将JSON对象保存到Firebase,android,json,firebase,pojo,Android,Json,Firebase,Pojo,我是firebase的新手,我正在尝试将JSON对象数据放入我的firebase中。 我知道如何将数据作为类对象放入Firebase,但我想将JSON对象数据放入Firebase 有没有办法将JSON对象数据放入Firebase而不将其转换为POJO?在Firebase上保存JSON值非常简单。假设您已致电您的firebase参考 Firebase ref = new Firebase("https://docs-examples.firebaseio.com/android/saving-da

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


有没有办法将JSON对象数据放入Firebase而不将其转换为POJO?

在Firebase上保存JSON值非常简单。假设您已致电您的firebase参考

Firebase ref = new Firebase("https://docs-examples.firebaseio.com/android/saving-data/fireblog");
然后,您将通过
Map
对象传递数据<代码>映射使用键保留值。在本例中,您将有一个
字符串
键和
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 userRef=ref.child(“用户”);
Map userMap=newhashmap();
JSONObject tempObject=新的JSONObject();
试一试{
tempObject.put(“生日”、“1992”);
tempObject.put(“全名”、“Emin AYAR”);
}捕获(例外e){
e、 printStackTrace();
}
userMap.put(“myUser”,tempObject);
userRef.setValue(userMap);

因为您在问题中已经标记了android,所以我猜您想从android客户端将一些数据放入firebase数据库中

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

我真的不知道你为什么要避开波乔。它使整个操作更加简化。现在让我们假设您有一个JSON字符串。您需要将JSON映射到java类,以便将其直接放入firebase中。Firebase以类似JSON的格式存储数据,易于理解

我使用它将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);
简单

如本文所述:

您可以轻松地将json对象/字符串转换为
映射
(甚至不需要创建POJO):

Firebase ref=新的Firebase(您的\u Firebase\u ref);
Map Map=new Gson().fromJson(jsonString,new TypeToken(){}.getType());
参考设定值(map);

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

  String jsonString; //set to json string
  Map<String, Object> jsonMap = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, Object>>() {}.getType());
如果您不介意或希望设置新节点,请使用

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

Kotlin中的解决方案,因为自动转换将其转换为编译时错误:

val jsonMap=Gson().fromJson(stringJson,对象:TypeToken(){}.type)

我认为如果没有POJO,将数据存储到firebase是非常困难的……firebase将数据保存为json,但是为什么我不能将数据保存为json?您可以发布一个要存储在firebase中的json数据吗?@shj查看我的答案您可以使用firebase中的导入json选项在firebase中保存所需的json数据。Java没有表示json的本机格式。JSON数据的格式是什么?如果它是一个
映射
,那么你可以将它传递到与POJO相同的
ref.setValue()
(正如Emin回答的那样)。刚才注意到另一张海报也有相同的方法,我将把关于如何在Firebase DB中设置JSON对象的附加信息的答案留给bcos。它在Firebase数据库中添加了键名为myUser的值吗?
 firebaseDatabaseRef.child("users").child(uid).child({your new node}).setValue(jsonMap);
val jsonMap = Gson().fromJson<Any>(stringJson, object : TypeToken<HashMap<String, Any>>() {}.type)