私はAlibabaのFastjsonを使ってオブジェクトのシリアライズとデシリアライズを行いました。元のjson文字列はすべてa、b、c...だったので。 そのような文字は表現されていますが、私はそれらをオブジェクトにシリアライズしており、オブジェクトをそのような無意味なプロパティとして定義することはできません。 ここではJSONFieldの注釈が使用されています。
フィールドをオンにする方法とセットをつける方法の違い@JSONField
- フィールドは、直列化および非直列化操作の両方を指定します
- getに設定し、シリアライズ時に操作を指定します
- setはデシリアライズ時の操作を指定します
使用後は通常通りシリアライズはできますが、下の図のように通常通りデシリアライズはできません。
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}
エラーの原因:
オブジェクトの性質はジャワのハンプ命名法に従っておらず、最初の単語を除いてすべて大文字で表されます。 例えば
int myStudentCount; 変数myStudentCountはすべて小文字で、その後の最初の文字は大文字で表されます。
解決:
オブジェクト属性の名前を変更し、以下のコードでget/setメソッドを再生成します:
正しい属性に対しては、以下の画像のようにデシリアライズが成功します。
|