我有这个项目我正在努力,我似乎无法让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文件夹中。
我错过了什么?
答案 0 :(得分:0)
我认为这是因为你出于同样的目的使用两个不同的@annotation:
@Expose // serialize the variable as mId
private String mId
@SerializedName("Id") // serialize the variable as Id
private String mId;
您可以尝试仅使用@SerializedName
希望这有帮助
抱歉我的英文。