2017-09-27 2 views
-1

J'ai une méthode pour sauvegarder les valeurs contentValues ​​à partir des données du serveur distant, comme indiqué ci-dessous:Comment gérer une réponse nulle à partir des données JSON?

public static ContentValues platformInfoToContentValues(@NonNull 
    GamePlatformInfoList platform) { 
     ContentValues values = new ContentValues(); 

     values.put(TrackedPlatformEntry.COLUMN_PLATFORM_ID, platform.id()); 
     values.put(TrackedPlatformEntry.COLUMN_PLATFORM_NAME, platform.name()); 
     values.put(TrackedPlatformEntry.COLUMN_PLATFORM_ORIGINAL_PRICE, platform.original_price()); 
     values.put(TrackedPlatformEntry.COLUMN_PLATFORM_RELEASE_DATE, platform.release_date()); 
     values.put(TrackedPlatformEntry.COLUMN_PLATFORM_COMPANY_NAME, platform.company().name()); 
     values.put(TrackedPlatformEntry.COLUMN_PLATFORM_SMALL_IMAGE, platform.image().small_url()); 
     values.put(TrackedPlatformEntry.COLUMN_PLATFORM_MEDIUM_IMAGE, platform.image().medium_url()); 
     values.put(TrackedPlatformEntry.COLUMN_PLATFORM_HD_IMAGE, platform.image().super_url()); 

     return values; 
} 

Dans la dernière ligne du platform.company() valeur est nulle qui est responsable de s'écraser mon application.

Mes données JSON est dans le format suivant:

{ "société": null, "name": "PC", }

Ici, la plate-forme est un objet de données GamePlatformInfoList qui inturn "HAS-A" société en tant que objet de données GameCompanyInfoShort à l'intérieur. Par conséquent, je l'utilise comme "platform.company(). Name()". Comment dois-je vérifier null avant d'accéder à la propriété "name()"? Aidez-moi, s'il vous plaît.

+0

double possible de (https://stackoverflow.com/questions/10588763/android-json-and-null-values) –

+0

si (platform.company()! = Null) [Android JSON et les valeurs NULL]? –

+0

@NongthonbamTonthoi - J'essaierai cette fois .. –

Répondre

0

Lorsque vous obtenez votre JSON simplement écrire ce

if(jsonObject.getString("company")!=null){ 
    // do your thing here 
} 

Vous pouvez aussi le faire json.isNull("field-name").

+0

En fait, j'utilise la bibliothèque AutoValue de Google pour convertir automatiquement le JSON en JSONObject. J'ai essayé toutes les réponses données ici, mais il est incapable de répondre à ma question. Le paramètre que j'ai passé dans la méthode "GamePlatformInfoList platform" est déjà un objet JSON mais je pourrais trouver les méthodes isNull() ou getString() pour vérifier "null". –

0
obj.length() == 0 

ou

if (jsonObject.isNull("company")) 
0

I utilisé l'opérateur ternaire pour traiter null comme indiqué ci-dessous.

values.put(TrackedPlatformEntry.COLUMN_PLATFORM_COMPANY_NAME, platform.company() != null ? platform.company().name() : "UNKNOWN COMPANY"); 

Cela a fonctionné pour moi.