Firebase Сохранить данные из значения, разделенного запятыми - PullRequest
0 голосов
/ 08 января 2020

У меня ниже Json Ответ от моего php

enter image description here

В настоящее время у меня есть код ниже, чтобы вставить данные в базу данных

        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

enter image description here

что я хочу сделать, так это чтобы каждый мобильный телефон был отделен запятой, а не от ответа json будет сохранен как ниже структура firebase. Как мне этого добиться

enter image description here

Ответы [ 2 ]

1 голос
/ 08 января 2020

Вы не можете иметь несколько ключей с одним и тем же именем в объекте Json, одну вещь, которую вы можете сделать, это сохранить его как массив данных String, при добавлении данных в базу данных реального времени, разделить их на , следующим образом

userValues.put("dMoble", obj.getString("driver_mobile").split(","));

, если вы хотите ввести ключ: - 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);
1 голос
/ 08 января 2020

Здесь вы берете все , отдельные телефонные номера в одну строку. поэтому Firebase предполагает, что это будет одна строка. Чтобы добавить телефонные номера отдельно, вам нужно разделить строку мобильных номеров и сохранить ее в массиве. С foreach l oop к этому массиву вы можете добавить отдельные числа с индексом.

Между прочим, Firebase перезапишет значение, если один и тот же ключ используется в одном узле, поэтому для добавления каждого номера мобильного телефона вам нужно другое значение ключа для каждого номера мобильного телефона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...