Преобразование из json в класс с gson, похоже, ничего не делает - PullRequest
1 голос
/ 28 февраля 2011

Я пытаюсь десериализовать строку json, используя gson . Вот мой код

static class ReturnPramaters {
    public ReturnPramaters()
    {
    }
    public Boolean LoginFailed = true;
    public String LoginFailedReason = "";
    public String AppPath  = "";
    public String WorkstiaonGuid = "";
    public String RDPUsername  = "";
    public String RDPPassword  = "";
    public int StartMode = -1;
    public String ServerAddress  = "";
}
public static void main(String[] args) {
    String json = sendGetRequest("http://example.com:80/Rdp/json/login","username=test&password=1234");
    Gson gson = new Gson();
    ReturnPramaters para = gson.fromJson(json, ReturnPramaters.class);
    if(para.LoginFailed)
        JOptionPane.showMessageDialog(null, para.LoginFailedReason, "Login Failed",JOptionPane.ERROR_MESSAGE);
    else {
        //...
    }
}

вот моя строка json, восстановленная из запроса get.

"{"d":{"__type":"ReturnPramaters:#ServerApp","AppPath":"C:\\Remote Desktop Manager\\Launcher\\Launcher.exe","LoginFailed":false,"LoginFailedReason":null,"RDPPassword":"XjE2QAL","RDPUsername":"test09","ServerAddress":"example.com","StartMode":1,"WorkstiaonGuid":"96175701-f72a-44e9-8ee1-6eb756293654"}}"

Однако после ReturnPramaters para = gson.fromJson(json, ReturnPramaters.class); para все еще имеет все неинициализированные значения. Что идет не так, что приводит к сбою?

Ответы [ 3 ]

3 голосов
/ 28 февраля 2011

Похоже, что JSON, на который вы отображаете, упакован в другой объект с полями d и _type.

Итак, создайте простую оболочку.

1 голос
/ 28 февраля 2011

попробуйте усечь входящую строку перед передачей в GSON, чтобы она выглядела следующим образом

"{
    "AppPath":"C:\\Remote Desktop Manager\\Launcher\\Launcher.exe",
    "LoginFailed":false,
    "LoginFailedReason":null,
    "RDPPassword":"XjE2QAL",
    "RDPUsername":"test09",
    "ServerAddress":"example.com",
    "StartMode":1,
    "WorkstiaonGuid":"96175701-f72a-44e9-8ee1-6eb756293654"
}"

Объект, который у вас есть в JSON, представляет следующий объект Java

public class MyClass{
  ReturnPramaters d;
}
0 голосов
/ 28 февраля 2011

Ваш тип класса является статическим. Это сработает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...