【发布时间】:2015-09-15 13:36:58
【问题描述】:
我正在尝试通过 GSON 库将我的对象转换为字符串。
我是这样写的:Gson().toJson(this) 和String 我收到的不是满的。
这是我的“this”对象:
如您所见,它具有准确度字段(结果 -> 轨迹 -> 点数-> 准确度) 但是当我执行这个 Gson().toJson(this) 时,我得到了没有这个字段的字符串。它有什么问题?
{
"carId": 14,
"closed": 1442409732,
"commentEnd": "оо",
"guid": "bbc329e4-65c5-4b16-91d5-45283ca9dcb7",
"isDeleted": false,
"lastUpdate": 0,
"litersEnd": -23.1,
"litersStart": -23.1,
"number": 0,
"odometrEnd": 25,
"odometrStart": 44,
"opened": 1442409723,
"id": 0,
"status": 2,
"Tracks": [
{
"categoryId": 2,
"closed": 1442409729,
"commentEnd": "рр",
"distance": 0,
"guid": "aba4de4a-5bc7-49fc-a537-b8da3dd17783",
"opened": 1442409723,
"points": [
{
"dateCreated": 1442409725,
"guid": 579,
"lat": 56.8408432,
"lng": 53.2100482
}
],
"id": 0,
"statusNumber": 2
}
],
}
我的 Point 对象类看起来像这样(只是变量声明:
@DatabaseTable(tableName = "points")
public class Point implements Serializable {
@DatabaseField(generatedId = true)
@SerializedName("guid")
long id;
@DatabaseField(foreign = true, columnName = "trackId")
transient Track track;
@DatabaseField
double lat;
@DatabaseField
double lng;
@DatabaseField
long dateCreated;
@DatabaseField
transient float accuracy; //this field is faulty
transient String provider;
public Point() {}
public Point(double lat, double lng, long dateCreated) {
this.lat = lat;
this.lng = lng;
this.dateCreated = dateCreated / 1000L;
}
}
而Point是Track对象的字段,是DrivingList对象的字段,扩展了Uploadable我在其中运行此代码的抽象类:
public abstract class Uploadable {
public String toJson() {
return new Gson().toJson(this);
}
【问题讨论】:
-
如果您不发布任何代码,我们将无法为您提供帮助。请edit您的帖子包含更多代码。
-
确保该字段不是
transient