Получение нулевого значения при разборе данных из базы данных Firebase Realtime Android - PullRequest
0 голосов
/ 10 октября 2019

enter image description hereenter image description here Я интегрирую базу данных Firebase в реальном времени, есть два списка в новостях и категориях Firebase.

Когда я пытался получать новостииз categoryId = 1 это работает нормально, но когда я выбираю categoryId = 2, я получил два нулевых значения в моем ответе массива.

[
    null,
    null,
    {
        image="https://zdnet3.cbsistatic.com/hub/i/2016/06/29/a6f69a53-88f3-4e1b-9b59-2287c81e7671/bdc6cc9e6d26866aa44607d87e43f082/syme-ios-v-android.jpg",
        description="PrabhudasLilladheranalystAniketPandesaidinanote.Weremaincautiousonoveralldemandenvironmentandas",
        news_url="https://www.google.co.in",
        short_desc="AndroidisbetterthaniOS",
        title="Technology",
        categoryId="2"
    },
    {
        image="https://i.gadgets360cdn.com/large/oneplus_7T_pro_event_1570722059050.jpg?output-quality=80&output-format=webp",
        description="OnePlusLaunchEventstartedwiththecompany'sco-founderCarlPeionthestage.HebeganbytalkingaboutOxygenOS.PeicitedastudythatclaimsthatOxygenOSisoneofthetopthreereasonswhyOnePlususerslovethecompany.HealsotalkedaboutOxygenOSbetaprocessandhowithelpsthecompanygathersignificantamountoffeedbackabouttheoperatingsystembeforerollingoutanewversionwidely",
        news_url="https://gadgets.ndtv.com/mobiles/news/oneplus-7t-pro-launch-live-updates-mclaren-edition-london-price-specifications-2114715",
        short_desc="OnePlus7TProMcLarenEditionIsOfficial:LiveUpdates",
        title="Technology",
        categoryId="2"
    }
]

это ответ, который я получил от моего запроса

 mChildReference = databaseReference.child("news_data").orderByChild("categoryId").equalTo(categoryId);

      mChildReference.addValueEventListener(new ValueEventListener() {
          @Override
          public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
              Toast.makeText(context,dataSnapshot.toString(),Toast.LENGTH_SHORT).show();

              String json =  dataSnapshot.getValue().toString();
              try {
                  JSONArray obj = new JSONArray(json);

              } catch (Throwable t) {
                  Log.e("Catch", "Could not parse malformed JSON: \"" + json + "\"");
              }
          }
          @Override
          public void onCancelled(@NonNull DatabaseError databaseError) {

          }
      });

Ошибка: значение null типа org.json.JSONObject $ 1 не может быть преобразовано в JSONObject

1 Ответ

0 голосов
/ 10 октября 2019

Внутри onDataChange, проверьте вот так:

    for(DataSnapshot ds : dataSnapshot.getChildren()) { 
        if(ds != null) {
            //Do stuff here
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...