我的php下面有Json回复
目前,我有以下代码将数据插入Firebase
JSONArray arr = new JSONArray(result);
//JSONObject jObj = arr.getJSONObject(0);
String[] stocks = new String[arr.length()];
for(int i=0;i<arr.length();i++){
JSONObject obj = arr.getJSONObject(i);
mDatabase= FirebaseDatabase.getInstance().getReference().child(context.getResources().getText(R.string.bid_request).toString().trim());
Map<String, Object> userValues = new HashMap<>();
DatabaseReference newBid=mDatabase.push();
userValues.put("uid", obj.getString("user_id"));
userValues.put("uNme",obj.getString("first_name")+" "+obj.getString("last_name"));
userValues.put("uMoble", obj.getString("user_mobile"));
userValues.put("uAvtr", obj.getString("src"));
userValues.put("uRat", obj.getString("user_ratings"));
userValues.put("pck", obj.getString("pickup_location"));
userValues.put("drp",obj.getString("drop_location"));
userValues.put("pLat", obj.getString("pickup_latitude"));
userValues.put("pLan", obj.getString("pickup_longitude"));
userValues.put("dLat", obj.getString("drop_latitude"));
userValues.put("dLan", obj.getString("drop_longitude"));
userValues.put("did",obj.getString("driver_id"));
userValues.put("dMoble", obj.getString("driver_mobile"));
newBid.setValue(userValues, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
});
它正在按以下Firebase结构保存数据
我想做的是将每个逗号分隔的移动电话(与json响应分开)保存为以下firebase结构。我该如何实现
答案 0 :(得分:1)
在这里,您将整个,
分开的电话号码当作一个字符串。因此Firebase假定该字符串为单个字符串。要分别添加电话号码,您需要分割手机号码字符串并将其存储在数组中。通过对该数组进行foreach
循环,可以添加带有索引的单个数字。
如果单个节点中使用了相同的密钥,则Firebase会覆盖该值,因此,要分别添加每个移动电话号码,您需要为每个移动电话号码设置不同的密钥值。
答案 1 :(得分:1)
Json对象中不能有多个具有相同名称的键,您可以做的一件事是将其存储为String的数组列表,同时将数据添加到实时数据库中,并用,跟随
userValues.put("dMoble", obj.getString("driver_mobile").split(","));
如果您想输入一个ed:- mobilenum 和每个手机号码,请尝试以下解决方案
List<HashMap<String ,String>> dMobiles = new ArrayList<>();
for (String mobilenum:jsonObject.getString("driver_mobile").split(",")){
HashMap<String,String> mobileMap = new HashMap<>();
mobileMap.put("mobilenum",mobilenum);
dMobiles.add(mobileMap);
}
userValues.put("dMoble",dMobiles);