AndroidのFastJson基本使用、属性の頭文字の大文字と小文字の問題
1607 ワード
FastJsonフレームワーク、本当に使いやすいです.以下に、変換の操作方法を記録する.
1.構成:build.gradle(Module:app)に参照を追加
注意:1.2.60の前に重大な脆弱性があります.「x」エスケープを含むOOMが表示されます.
2.具体的な操作:実体クラスまたは集合回転JSON列 JSONシリアルJSOnObject JSONシリアルエンティティークラス JSONシリアルバンド汎用リストの集合
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")を追加することです.
コードの例:
//カスタムオブジェクト
変換コード:
1.構成:build.gradle(Module:app)に参照を追加
// json
implementation 'com.alibaba:fastjson:1.2.60'
注意:1.2.60の前に重大な脆弱性があります.「x」エスケープを含むOOMが表示されます.
2.具体的な操作:
String jsonString = JSONObject.toJSONString( );
JSONObject jsonObject = JSONObject.parseObject(jsonString);
javaBean = JSON.parseObject(json, .class);
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);