2017-08-09 78 views
0

我有這個項目,我正在努力,我似乎​​無法讓Gson正常行爲。 下面是截圖/文件,我將提及: https://www.dropbox.com/sh/4qi2skij9knea7n/AACwkRV9x43lZeOoTZeCS3NPa?dl=0Gson toJson沒有序列化具體值

我有我的模型,旅行:

public class Trip { 

@Expose 
@SerializedName("Id") 
private String mId; 

@Expose 
@SerializedName("Name") 
private String mName; 

@Expose 
@SerializedName("Date") 
private String mShipmentDateString; 

@Expose 
@SerializedName("State") 
private int mState; 

@Expose 
@SerializedName("Orders") 
private List<Order> mOrders; 


//Getters and setters 
} 

就是這樣,僅此而已。 我創建了一個單獨的項目,試圖更好地理解這個問題,我在主要活動做的是:

String jsonElement = JsonHelper.getString(); 
final TripResponse trips = new Gson().fromJson(jsonElement, 
TripResponse.class); 

TripRequest tripRequest = new TripRequest(); 
tripRequest.setTrips(trips.getTripList()); 

Gson gson = new GsonBuilder().serializeNulls().create(); 
String jsonWithBuilder = gson.toJson(tripRequest); 


Gson gsonB2 = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().serializeNulls().create(); 
String object = gsonB2.toJson(tripRequest); 

這是我得到的,因爲你可以看到,即使dateString存在,並且有一個值它沒有被序列化: (查看文件夾中的image1)。

有趣的是:如果我在日期字符串和名稱之間交換了SerializedName,它會突然序列化日期而不是名稱(如您在dropbox上的image2中看到的那樣)。

輸入和輸出(輸出從第118行開始)位於收存箱文件夾中的文件「INPUTANDOUTPUT」中。

我錯過了什麼?

+0

您的分享圖像沒有加載到我的身邊 – Piyush

+0

我不知道爲什麼,他們在我已經鏈接的保管箱文件夾中共享和公開.. –

+0

檢查[this](https://stackoverflow.com/questions/ 4802887/gson-how-to-exclude-specific-fields-from-serialization-without-annotations)@Sara Seward – Piyush

回答

0

我想這是因爲你使用兩個differentes @annotation爲了同樣的目的:

@Expose // serialize the variable as mId 
private String mId 

@SerializedName("Id") // serialize the variable as Id 
private String mId; 

你可以嘗試使用剛剛@SerializedName

希望這有助於

對不起,我的英語水平。

+0

我試過了,它沒有改變任何東西。 :( –

+0

請問您可以分享Trip對象的例外json格式嗎? – Cochi

+0

我已經有了,它在共享文件夾的文件inputoutput.txt中。 –