2017-08-09 208 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中。 –