AndroidのFastJson基本使用、属性の頭文字の大文字と小文字の問題


FastJsonフレームワーク、本当に使いやすいです.以下に、変換の操作方法を記録する.
1.構成:build.gradle(Module:app)に参照を追加
//  json
implementation 'com.alibaba:fastjson:1.2.60'

注意:1.2.60の前に重大な脆弱性があります.「x」エスケープを含むOOMが表示されます. 
 2.具体的な操作:
  • 実体クラスまたは集合回転JSON列
  • String jsonString = JSONObject.toJSONString(   );
  • JSONシリアルJSOnObject
  • JSONObject jsonObject = JSONObject.parseObject(jsonString);
  • JSONシリアルエンティティークラス
  •     javaBean = JSON.parseObject(json,    .class);
  • JSONシリアルバンド汎用リストの集合
  • List list = JSON.parseObject(json, new TypeReference>(){});

     
    3.問題が発生しました:(属性の頭文字の大文字と小文字の問題)
    シーン:ハードウェアの同僚はアンドロイドがAPPを開発し、データ伝送を行い、伝送フォーマットはJsonである.カスタムNFC情報クラスをFastJsonで変換することにしました.key-valueは相手が定義したので、keyは頭文字で大文字です.
    携帯電話でNFC機能を使っても読み書きは大丈夫ですが、ハードウェアの同僚は、書き込まれたデータkeyの頭文字が小文字になっていることに気づきました.
    元:Jsonに変換する時FastJsonのソースコードは1段の操作をすることができて、fastjsonの内部はBeanの変換をする時comまで使うことができます.alibaba.fastjson.util.TypeUtilsは、クラスのロード時に環境変数fastjsonを読み込む.compatibleWithJavaBean. オブジェクトの大文字属性を小文字に変換しました.
    解決策もいろいろありますが、ネットで調べてみると、一番いい方法はやはりこの属性のgetメソッドに@JSOnField(name="Name")を追加することです.
    コードの例:
    //カスタムオブジェクト
    public class NfcBean implements Serializable {
        private int State;
     
        @JSONField(name = "State")
        public int getState() {
            return State;
        }
     
        public void setState(int state) {
            State = state;
        }
    }

    変換コード:
    String nfcStr = JSONObject.toJSONString(nfcBean);