NullPointerException в нескольких реальных устройствах при анализе JSON с Gson - PullRequest
0 голосов
/ 24 июня 2019

У меня есть файл JSON, который я загружаю из хранилища и анализирую с помощью Gson. В 10% устройств, которые запускают приложение, оно будет зависать на определенной линии.

Я установил приложение на другие телефоны Android, но ни один из них не разбился на этой линии.

Сначала я читаю файл и разбираю его с помощью Gson:

new Gson().fromJson(FileManager.readFile(new File(json)), listType)

тип списка:

listType = new TypeToken<ThirdPartyServerModel>(){}.getType();

Файл JSON:

 {
 "accepted_values": {
  "policy_term": [
         2,
         3,
         4,
         6,
        12
     ]
  }

Мой класс POJO ThirdPartyServerModel:

@AutoValue
public class ThirdPartyServerModel implements Serializable {
    @SerializedName("accepted_values")
    public AcceptedValues acceptedValues;

@AutoValue
public static class AcceptedValues {
    @SerializedName("liability_property_damage")
    public List<String> liabilityPropertyDamage;

    @SerializedName("policy_term")
    public List<Integer> policyTerm;

}}

Строка ошибки:

for (int i = 0; i < 
      thirdPartyServerModels.acceptedValues.policyTerm.size(); i++) {
            policyTerms.add(new SimpleItem(null));
   }}

Ошибка:

java.lang.NullPointerException: Attempt to read from field 
'ThirdPartyServerModel.acceptedValues' on a null object reference

Почему это происходит только на некоторых устройствах, а не на всех?

1 Ответ

0 голосов
/ 25 июня 2019

Ваш JSON недействителен

Я думаю, вы забыли добавить {}

сейчас работает Я тестировал код ниже

public class ThirdPartyServerTest {

    String json =
            "{\"accepted_values\": {\n" + " \"policy_term\": [\n" + "        2,\n" + "        3,\n" + "        4,\n" + "        6,\n" + "        12\n"
                    + "    ]\n" + " } }";

    @Test
    public void test() {
        //given
        Type listType = new TypeToken<ThirdPartyServerModel>() {
        }.getType();
        //when
        ThirdPartyServerModel model = new Gson().fromJson(json, listType);
        //then
        assertEquals(5, model.acceptedValues.policyTerm.size());
        assertEquals(new Integer(12), model.acceptedValues.policyTerm.get(4));
    }

}
...