改进MYSQL - 在LinkedTreeMap中序列化值

时间:2016-10-27 10:48:19

标签: java android mysql serialization retrofit

我从MYSQL数据库中获取一些数据,我使用ARC获得的响应采用以下形式:

{
    "Id": 1
    -"Status": {
        "type": "Buffer"
        -"data": [1]
            0:  0
    }
    "Updated": "2016-10-25T13:15:25.000Z"
    "UserName": "Aidin"
}

在Android Studio中,我试图将其映射到具有Retrofit和Serialization的对象,如下所示:

@SerializedName("Id")
private int id;
@SerializedName("Status")
private boolean status;
@SerializedName("UserName")
private String name;
@SerializedName("Updated")
private Date updated;

public int getId() {
    return id;
}

public String getName() {
    return name;
}...

这适用于除Status之外的每个变量。 我的问题是,我如何为MYSQL中的Bit值执行此操作,即Status,它似乎是一个数组而不是一个简单的位值?

@SerializedName("Status")
private boolean status;

不起作用。 我能做到

@SerializedName("Status")
private LinkedTreeMap status;

稍后在getter中使用status.get("data")并返回位值。 但我宁愿做类似的事情:

@SerializedName("Status.get(\"data\")")
private boolean status;

这可能吗?做的标准方法是什么? 我给出的示例返回一个空值。

------------------- UPDATE -----------------

阅读此主题后:Which MySQL data type to use for storing boolean values

我想我的问题更多的是关于在MySQL中用作布尔值的类型。尽管似乎存在关于适当布尔类型的争议,但大多数人似乎都赞成Tinyint。我选择了Bit,因为在我看来它似乎最接近布尔值,但我想我错了。更改为Tinyint我可以序列化并将整数值解析为布尔值,没问题,所以我的问题就解决了。

但是,有时候我需要使用一个以LinkedTreeMap形式呈现的数据类型,所以我仍然对是否可以使用类似的东西感到好奇:

@SerializedName("Status.get(\"data\")")
private boolean status;

0 个答案:

没有答案