我有课:
public class SentPlayer {
final String uuid;
final String playerName;
final String universeUuid;
/* some get methods and constructors */
}
public class PlayerMsg {
public final SentPlayer player;
public final String msg;
/* constructors and such */
}
然后我有这个来自 api 的 JSON:
{
"player": {
"uuid": "",
"playerName": "Rushmore75",
"universeUuid": "9dae671e-91ed-440e722c12"
},
"msg": "1234"
}
但是,当我将所说的 json 反序列化到
PlayerMsg
类时,除 "playerName"
之外的所有字段都反序列化,而 playerName
只是 null
而不是 "Rushmore75"
。我正在使用启用了“serializeNulls”的默认 GSON 配置。使用 gson 2.10
试试这个:
public class SentPlayer {
@SerializedName("uuid")
final String uuid;
@SerializedName("playerName")
final String playerName;
@SerializedName("universeUuid")
final String universeUuid;
// constructors and getters
}
从两个类的所有字段中删除
final
关键字。它会序列化。
工作示例:
public class SentPlayer {
String uuid;
String playerName;
String universeUuid;
public String getUuid() {
return uuid;
}
public String getPlayerName() {
return playerName;
}
public String getUniverseUuid() {
return universeUuid;
}
@Override
public String toString() {
return "SentPlayer [uuid=" + uuid + ", playerName=" + playerName + ", universeUuid=" + universeUuid + "]";
}
}
public class PlayerMsg {
public SentPlayer player;
public String msg;
public SentPlayer getPlayer() {
return player;
}
public String getMsg() {
return msg;
}
@Override
public String toString() {
return "PlayerMsg [player=" + player + ", msg=" + msg + "]";
}
}
@RestController
public class ControllerTest {
@GetMapping("test")
public void test(@RequestBody String msg) {
Gson gson = new GsonBuilder().serializeNulls().create();
PlayerMsg example = gson.fromJson(msg, PlayerMsg.class);
System.out.println(example);
}
}
输出:
PlayerMsg [player=SentPlayer [uuid=, playerName=Anish, universeUuid=123df], msg=1234]