Ik gebruikte Alibaba's Fastjson om objecten te serialiseren en deserialiseren, omdat mijn originele json-strings allemaal a, b, c... Dergelijke letters worden weergegeven, maar ik serialiseer ze tot objecten, en ik kan objecten niet definiëren als zulke betekenisloze eigenschappen. JSONField-annotaties worden hier gebruikt.
@JSONField het verschil tussen het leggen op een veld en de get-set-methode
- veld, waarin zowel serialisatie- als deserialisatiebewerkingen worden gespecificeerd
- Zet op get, waarbij de operatie wordt gespecificeerd bij het serialiseren
- set, specificeert de bewerking bij deserialisatie
Nadat ik het heb gebruikt, kan het normaal worden geserialiseerd, maar het kan niet normaal worden gedeserialiseerd, zoals te zien is in de onderstaande figuur:
JSON-string:
{"a":"shenzhou","b":"Jing Q7UB02","c":110000,"d":"2019-01-08T17:07:04+08:00","e":120.775085,"f":30.13825,"g":77,"h":171,"i":0,"j":4951,"k":2,"l":0,"m":0,"n":4,"o":"0","p" :1}
Foutoorzaken:
De eigenschappen van objecten volgen niet de hump-nomenclatuur van Java, waarbij alle behalve het eerste woord met een hoofdletter worden geschreven. Bijvoorbeeld
int myStudentCount; De variabele myStudentCount is helemaal met kleine letters, en de eerste letter van het woord daarna wordt met een hoofdletter geschreven.
Oplossing:
Wijzig de naam van het objectattribuut en genereer de get/set-methode opnieuw met de volgende code:
Voor de juiste attributen slaagt deserialisatie, zoals getoond in de volgende afbeelding:
|