0
votes

Parse Json à l'objet Java lorsque le même nom de champ se produit dans JSON imbriquée

ci-dessous est mon JSON:

{
  "time":{
    "date":{
      "year":2017,
      "month":3,
      "day":12
     },
    "time":{
      "hour":10,
      "minute":42,
      "second":42,
      "nano":810000000
     }
   },
"name":"Jon",
"message":{
"product":"orange"
"price":2000
}
}


4 commentaires

Analyser à un pojo ou une carte? Vous trouverez facilement plus de 27 réponses pour les deux ici sur ( ici ou ici ) ou dans une source de votre choix .


J'ai trouvé beaucoup de réponses mais je n'ai trouvé aucun pour inclure "le même nom de champ imbriqué" qui convertit Json en Pojo


Ok, désolé, je n'ai pas compris que vous ne voulez que la propriété Inner TIME . Vous pouvez simplement analyser tout sur un jsonnode, obtenir la propriété intérieure comme jsonnode et analyser à votre pojo (voir ma réponse).


Si vous tombez dans l'autre JSON Structure, vous pouvez toujours générer un modèle pojo à l'aide d'outils en ligne tels que celui-ci est décrit dans cette question: Array of Json Object à Java Pojo


3 Réponses :


2
votes

Vous pouvez créer des classes comme celles-ci: xxx

une fois terminé, vous pouvez utiliser jackson pour désérialiser la chaîne json dans Objet JavaObject , par exemple: xxx


2 commentaires

S'ils n'ont besoin que des données provenant de l'heure interne Prop, cela ressemble à beaucoup de frais généraux. Ou ai-je eu la mauvaise exigence?


Merci beaucoup. Pouvez-vous m'aider avec une dernière chose. Parfois, le champ Time est livré avec une heure, une minute, une seconde séparément et parfois il est entré en corde comme "10: 42: 42: 810000000" directement. Dans ce cas, comment puis-je créer une classe de temps?




1
votes

Si vous n'avez besoin que de l'objet Inner TIME CODE>, vous pouvez le faire rapidement:

10:42:42:810000000


2 commentaires

Merci beaucoup. Pouvez-vous m'aider avec une dernière chose. Parfois, le champ Time est livré avec une heure, une minute, une seconde séparément et parfois il est entré en corde comme "10: 42: 42: 810000000" directement. Dans ce cas, comment puis-je l'analyser?


@ user812142 Je ne comprends pas vraiment votre question. Le 10: 42: 42: 810000000 est juste une chaîne construite dans la méthode Tostring () de la pojo. Je n'ai ajouté que pour vous montrer une sortie qui prouve que les données sont là. Si votre JSON ne contient pas minute ou heure , ces valeurs ne seront pas définies (et de gauche à défaut, donc 0 dans ce cas, Mais vous pourriez changer cela).