2016-06-03 1 views
3

Я использую firebase для своего приложения для Android. Я следующую структуру данных пользователей в формате JSON:json формат для пользовательских данных с использованием firebase

 { "employee": 
     { 
      "empone" : { 
      "id" : "11", 
      "name" : "emponeone" 
      }, 
      "emptwo" : { 
      "id" : 10, 
      "name" : "emptwo" 
      } 
     } 
} 

Я пытаюсь получить имена всех сотрудника в моем arrylist. Но когда я читаю данные из firebase, я получаю ссылку на сотрудника в объекте Datasnapshot, который я не могу сохранить в своем jsonObject. Я попробовал следующее:

String data1= String.valueOf(dataSnapshot.getValue()); 

Но это дает мне данные в следующем формате:

data1= {empone={name=emponeone, id=11}, emptwo={name=emptwo, id=10}} 

есть в любом случае, так что я могу получить только имя поля в моей ArrayList или любой другой формат, чтобы получить структура сотрудника так же, как я хочу?

+0

Можете ли вы показать ** полный ** сниппет, который воспроизводит эту проблему? Прямо сейчас нам не известно, что означает 'dataSnapshot', что затрудняет его помощь. –

ответ

2

Следуйте за documentation. У этого есть хорошие примеры и объяснение. (. Так как смешать эти два в вашем примере, я не знаю)

Вам нужен класс Employee со строкой с именем name, в междунар или строку с именем id Наконец, преобразовать это следующим образом:

class Employee { 
    String name; 
    String id; 

    public Employee(){ 
     //needed for the getValue() method 
    } 

    //getters, setters, constructors 
} 



// Get Employee object and use the values to update the UI 
Employee employee = dataSnapshot.getValue(Employee.class); 
0

вы dataSnapShot должны иметь детей, вы должны выполнить итерацию по ним:

for (DataSnapshot snapshotChild : snapshot.getChildren()) 

и разобрать детей с помощью employee.class, который будет описывать сотрудника в качестве Java Bean класса USIN g snapshotChild.getValue(employee.class) оттуда вы можете получить имя, используя свою функцию get вашего класса bean.

1

Вывод, который вы получаете, - это выход из карты Java, как описано здесь: AbstractMap#toString.

Чтобы получить результат, как JSON, вы можете преобразовать карту в формате JSON с

JSONObject json = new JSONObject((Map)dataSnapshot.getValue()); 
Смежные вопросы