Невозможно десериализовать строку Json в POJO (используя GSON) - PullRequest
0 голосов
/ 27 августа 2011

Есть идеи, почему JSON не сопоставляется с объектом Java?

код ..

String result = "{\"outerclass\":{\"innerclass\":{\"booleanA\":true,\"stringB\":\"b\",\"stringC\":\"c\"}}}\n";

Gson gson = new Gson();
TempObject o = gson.fromJson(result,TempObject.class);

POJO ..

  public class TempObject {

     public static class outerclass {

      public static class innerclass {

       public static boolean booleanA;
       public static String stringB;
       public static String stringC;

      }    

     }

    }

Другой пример ..

String result = "{\"idata\":{\"result\":{\"error\":true,\"errorMessage\":\"Invalid username and/or password\",\"requestTime\":\"2011-08-26T18:39:02Z\"}}}"; 
Gson gson = new Gson();
UserData d = gson.fromJson(result, UserData.class);

Класс ..

public class UserData {

    idata data;

    public static class idata {
        result res;

        public static class result {

            public boolean error;
            public String errorMessage;
            public String requestTime;
        }    
    }
}

Ответы [ 2 ]

0 голосов
/ 10 февраля 2014

Вы не можете десериализовать, потому что имена переменных не совпадают с ключами в вашем Json.Во втором примере

String result = "{\"idata\":{\"result\":{\"error\":true,\"errorMessage\":\"Invalid username and/or password\",\"requestTime\":\"2011-08-26T18:39:02Z\"}}}"; 

idata data;
result res;

Имена объектов должны соответствовать ключам в JSON, но не именам классов.

IData idata ;Результат Результат ;

0 голосов
/ 27 августа 2011

Если я не ошибаюсь, это потому, что все ваши поля статичны, а не связаны с каждым отдельным объектом.

Поэтому я думаю, что класс должен выглядеть так:

public class TempObject {

    Outerclass outerclass;

    public static class Outerclass {
        Innerclass innerclass;

        public static class Innerclass {

            public boolean booleanA;
            public String stringB;
            public String stringC;
        }    
    }
}

Например, на моей машине вывод:

public class Example{
    public static void main(String[] args)  {
        String result = "{\"outerclass\":{\"innerclass\":{\"booleanA\":true,\"stringB\":\"b\",\"stringC\":\"c\"}}}\n";
        Gson gson = new Gson();
        TempObject o = gson.fromJson(result, TempObject.class);
        System.out.println(gson.toJson(o));
    }

    public static class TempObject {

        Outerclass outerclass;

        public static class Outerclass {
            Innerclass innerclass;

            public static class Innerclass {

                public boolean booleanA;
                public String stringB;
                public String stringC;
            }    
        }
    }
}

Is:

{"outerclass":{"innerclass":{"booleanA":true,"stringB":"b","stringC":"c"}}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...