Gson toJson没有序列化特定值

时间:2017-08-09 09:36:38

标签: android json serialization gson

我有这个项目我正在努力,我似乎​​无法让Gson正常行事。 以下是我将引用的屏幕截图/文件: https://www.dropbox.com/sh/4qi2skij9knea7n/AACwkRV9x43lZeOoTZeCS3NPa?dl=0

我有我的模特,旅行:

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
}

就是这样,仅此而已。 我创建了一个单独的项目来尝试更好地理解这个问题,我在Main Activity中做的是:

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)。

有趣的是:如果我在dateString和name之间交换SerializedName,突然它会序列化日期而不是名称:(正如你在dropbox上的image2中看到的那样)。

输入和输出(输出从第118行开始)在文件&#34; INPUTANDOUTPUT&#34;在Dropbox文件夹中。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我认为这是因为你出于同样的目的使用两个不同的@annotation:

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

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

您可以尝试仅使用@SerializedName

希望这有帮助

抱歉我的英文。