Käytin Alibaban Fastjsonia olioiden sarjallistamiseen ja deserialisointiin, koska alkuperäiset json-merkkijononi olivat kaikki a, b, c... Tällaiset kirjaimet ovat edustettuja, mutta sarjoitan ne objekteiksi, enkä voi määritellä objekteja sellaisiksi merkityksettömiksi ominaisuuksiksi. JSONField-merkintöjä käytetään tässä.
@JSONField ero kentän asettamisen ja get set -menetelmän välillä
- kenttä, joka määrittelee sekä serialisointi- että deserialisointitoiminnot
- Laita get-tilaan, jolloin toiminto määritellään sarjoituksissa
- set, määrittelee operaation deserialisoinnin yhteydessä
Kun olen käyttänyt sitä, se voidaan sarjallisesti sarjoittaa normaalisti, mutta sitä ei voi deserialisoida normaalisti, kuten alla olevassa kuvassa näkyy:
JSON-merkkijono:
{"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}
Virhe aiheuttaa:
Objektien ominaisuudet eivät noudata Javan kyhmynimitystä, ja kaikki paitsi ensimmäinen sana on isolla kirjattu. Esimerkiksi
int myStudentCount; Muuttuja myStudentCount on kokonaan pienillä kirjaimilla, ja sanan ensimmäinen kirjain sen jälkeen kirjoitetaan isolla.
Ratkaisu:
Muokkaa objektin attribuutin nimeä ja generoi get/set-metodi uudelleen seuraavalla koodilla:
Oikeiden attribuuttien osalta deserialisointi onnistuu, kuten seuraavassa kuvassa näkyy:
|