2014-12-30 2 views
2

Я пытаюсь разобрать JSON с сервера. У меня есть модель Pojo, но сервер JSON отправляет логическое значение как True, False вместо true, false. Можно ли сопоставить это с помощью пользовательских GSONbuilder и т.д.как пометить True как true, False как false используя Gson?

Вот мой класс

public class User { 

     private String id; 
     private String name; 
     private boolean isOnline; 

} 

Вот мой JSON от сервера

{ 
    "user": { 
    "id": 1, 
    "name": "Abc", 
    "isOnline": True 
    } 
} 

пользователь User = новый Gson(). FromJSON (JSon , User.class);

+0

Возможный дубликат [GSON False uppercase] (http://stackoverflow.com/questions/4722773/gson-false-uppercase) – Vishwanath

+0

Этот вопрос должен быть дублирован http://stackoverflow.com/questions/4722773/ gson-false-uppercase. Пожалуйста, проверьте, нужно ли вам то же самое. – Vishwanath

ответ

1

Вы делаете это неправильно. Если ваша строка json - это то, как вы это указали, вам нужно создать еще один класс модели с пользовательским объектом и дать ему класс при сериализации. Или делайте то, что я сделал в следующем коде. True или true не имеет значения.

public class HelloWorld { 

    public static void main(String args[]) { 

     String json = "{'id': 1,'name': 'Abc','isOnline': True}"; 
     User user = new Gson().fromJson(json, User.class); 
     System.out.println(user); 
    } 

} 

class User { 

    private String id; 
    private String name; 
    private boolean isOnline; 

    @Override 
    public String toString() { 
     return "User [id=" + id + ", name=" + name + ", isOnline=" + isOnline 
       + "]"; 
    } 
} 

и выход

User [id=1, name=Abc, isOnline=true] 

Воссоздание состояния модели (Desererialization) осуществляется с помощью отражения и чувствительно к регистру булевой строки заботиться. Вы можете проверить то же самое,

System.out.println(Boolean.parseBoolean("true")); 
System.out.println(Boolean.parseBoolean("True")); 
0

Предполагая, что вы используете Google Gson здесь, ваше создание объекта является неправильным; Вы должны были бы ваши JSON, чтобы посмотреть, как это для его работы:

{ 
    "id": 1, 
    "name": "Abc", 
    "isOnline": True 
} 

Чтобы распаковать ответ как данность, определить другой класс, как это:

public class JsonResponse { 
    private User user; 
} 

... и распаковать с:

JsonResponse user = new Gson().fromJSON(json, JsonResponse.class); 

... который должен дать вам ответ с правильно заполненным пользователем.

+0

Хмм, отмечены без комментариев, несмотря на то, что они в основном совпадают с принятым ответом. Там очень странные люди. – BarrySW19

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