gson改變輸出欄位的順序

cnnbull發表於2021-09-09

前段時間遇到的問題現在跟大家來分享。

前段時間遇到的問題現在跟大家來分享。
具體如下:

{"floats":[1.2482147,1.8486938,8.792648],"sensorType":"TYPE_ACCELEROMETER","time":171121101551270}

以上是一條記錄感測器型別資料的json字串,是用gson快速匯出json字元型別的,現在有一個需求:將字元順序改變為time,sensorType,floats的順序,在網上查了一下,發現gson並沒有向fastjson那樣改變欄位的用法,但是更改框架又比較麻煩。
最後找到了方法—TypeAdapter.write()
下面來看看具體程式碼

 public class SensorTypeAdapter extends TypeAdapter {        @Override
        public void write(JsonWriter out, SensorModule value) throws IOException {
            out.beginObject();            //按自定義順序輸出欄位資訊
            out.name("time").value(value.time);
            out.name("sensorType").value(value.sensorType);
            out.name("floats").value(value.floats.toString());
            out.endObject();
        }        @Override
        public SensorModule read(JsonReader in) throws IOException {            return null;
        }
    }

在初始化中傳入該類的物件

  gson = new GsonBuilder()
                .registerTypeAdapter(SensorModule.class, new SensorTypeAdapter())                //registerTypeAdapter可以重複使用
                .create();

這樣最後得到的json字串則為

{"time":171121103946789,"sensorType":"TYPE_ACCELEROMETER","floats":"[2.6871338, 5.106003, 7.918762]"}

收藏

原文連結:http://www.apkbus.com/blog-940038-76558.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2524/viewspace-2813062/,如需轉載,請註明出處,否則將追究法律責任。

相關文章