2015-12-17 3 views
0
{ 
"patients": { 
"-Kx5vuRqItEF-7kAgVWy": { 
    "name": "name1", 
    "age": "27", 
    "graphData": { 
     "-K5knK9j8EfUHS7AesFw": { 
      "date": "16/12/2015", 
      "graphList": "[...]" 
     } 
    } 
}, 
"-Kx5vuRqItEF-7kAgVWy": { 
    "name": "name1", 
    "age": "27", 
    "graphData": { 
     "-K5knK9j8EfUHS7AesFw": { 
      "date": "16/12/2015", 
      "graphList": "[...]" 
     }, 
     "--K5knNeBFoLrjWnZshfL": { 
      "date": "12/12/2015", 
      "graphList": "[...]" 
     }, 

    } 
    } 
} 
} 

PatientView является объектом Java и содержит еще один вложенный граф объектыНевозможно создать значение типа с использованием Firebase

public class PatientView { 
private String name; 
private String age; 
private boolean gender; 
private float height; 
private String phone; 
private Object bdate; 

private String image; 

private ArrayList<Graph> graphData; 

public PatientView() { 
} 
} 

Graph Object: который имеет дату и ArrayList объекта

public class Graph implements Serializable { 
private Object graphDate; 
private ArrayList<Double> graphList; 

// Empty constructor needed for firebase 
public Graph() { 

} 

public Graph(Object graphDate, ArrayList<Double> graphList) { 
    this.graphDate = graphDate; 
    this.graphList = graphList; 
} 
} 

и считывание значений с помощью firebase addChildEventListen

public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      if (dataSnapshot != null && dataSnapshot.getValue() != null) { 

       PatientView p = dataSnapshot.getValue(PatientView.class); 

       patients.add(p); 
       patientIdsFromServer.add(dataSnapshot.getKey()); 
       recyclerView.scrollToPosition(patients.size() - 1); 
       mAdapter.notifyItemInserted(patients.size() - 1); 
      } 
     } 

но получаю ошибку как

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: [email protected]; line: 1, column: 62] (through reference chain: com.iitb.openmrs.openmrsfinal.ui.Adapter.PatientView["graphData"]) 

Проблема заключается в том, что когда я толкающие данные к graphData ребенку идентификаторы генерируются таким образом, схема не соответствие с объектом Graph. Я искал, есть ли способ подавить идентификатор во время чтения данных, которые не нашли ничего.

+0

Вместо того, чтобы разместить ссылку на изображение данных JSON, пожалуйста, включите текст этого данные JSON в вашем вопросе. Это гарантирует, что нам не нужно открывать две вкладки для сравнения данных и кода. Кроме того, это позволяет нам более легко скопировать/вставить JSON в нашу собственную базу данных для тестирования (или ответа). –

ответ

0

Проблема заключается в том, что данные в graphData не являются массивом. Firebase не имеет встроенной поддержки массивов. Если вы храните массив, он действительно хранится как «объект» с целыми числами в качестве имен ключей, и поскольку ваш ключ не является целым числом, вы не можете использовать его в качестве массива.

Вы должны проверить this SO answer.

Смежные вопросы