11
votes

Analyser un identifiant de chaîne avec le sucre et le gson

J'utilise gson code> pour créer un objet Sugarecord code> d'une réponse JSON. L'API que j'utilise renvoie un champ appelé "ID", mais le type d'identifiant "est une chaîne, pas longue (le backend utilise Mongo).

ci-dessous est le code que j'utilise: P>

@SerializedName("id")
String nutrition_plan_id;


2 commentaires

Pourquoi ne prenez-vous pas ID long de votre modèle?


essayé ça. Le type long de l'ID vient automatiquement de Sugarecord. J'essaie de l'écraser et de le changer à un type de chaîne


6 Réponses :


0
votes

Je suis préoccupé par le même problème et la seule solution que j'ai trouvée était de renommer le nom d'identification de mon API. Du fait, essayez d'envoyer Nutrition_PLAN_ID au lieu de ID de votre API et cela ferait le travail.


1 commentaires

Le seul problème est que j'utilise une API tiers, donc je ne peux donc pas changer l'ID.



0
votes

Voici ma solution, mais ce ne sera pas le meilleur.

Je viens d'ignorer id dans mon alimentation xxx it Fonctionne bien, mais le vrai ID n'est plus utilisé.


0 commentaires

4
votes

Remplacez la touche "ID" dans la chaîne pour être "nutrition_day_id". Vous pouvez utiliser l'identifiant JSON et l'ID SQL.

jsonObject.getJSONObject("nutrition_day").toString().replace("\"id\"","\"nutrition_day_id\"")


0 commentaires

1
votes

Cela m'a aidé à changer id nom sur moyen et ajouter annotation @expose à tous les champs qui doivent être sérialisés et ajouter une annotation < Code> @SerializedName au nouveau ID . XXX


0 commentaires

0
votes

Je cherchais une solution à ce problème pendant un certain temps. Enfin, j'ai trouvé une solution à elle. Ajouter simplement @Table Annotation à la classe souhaitée au lieu de l'étendre à partir de Sugarecord et ajoutez manuellement ID attribut. Vous pouvez l'exclure de la sérialisation de gson via transitoire mot-clé, ou / / et renommez-le, avec @SerializedName Annotation.

Exemple (fonctionne bien pour moi sur le sucre " ): xxx

mais cela signifie que vous ne pouvez pas utiliser .save (), .delete () , etc. Méthodes de cette classe. Au lieu de cela, vous devez utiliser les méthodes statiques de Sugarecord: Sugarecord.Save (), Sugarecord.Delete () , ...


0 commentaires

1
votes

Aucun gros changements n'a besoin d'être fait.

Utilisez simplement Énoncé transitoire avant long type xxx

Ensuite, si vous avez GETID et SETID METHODS, devez les supprimer.

et amusez-vous!


0 commentaires