我上课的字段为names
:
private List<String> names;
我得到的杰森看起来像:
"names": [
{
"name": "a",
},
{
"name": "b",
},
{
"name": "c",
}
]
所以我使用自定义序列化将此json转换为List:
@JsonProperty("names")
private void deserializeNames(List<Map<String, String>> json) {
names = json.stream().map(e -> e.get("name")).collect(Collectors.toList());
}
此解决方案有效,但是当我要序列化我的类的对象时,新的json将如下所示:
"names": [
"a",
"b",
"c"
]
我的自定义序列化代码将无法使用,因为它需要Map
而不是List
我试图使用instanceof
来解决该问题,或者使用反序列化列表进行映射,但是我认为这是错误的解决方案。
有没有解决这个问题的简便方法?
答案 0 :(得分:1)
您无需为此编写自定义反序列化器, 您可以定义一个类,
function DeleteYESColumnF() {
// This Code will delete any "YES" in Column F.
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var rowsDeleted = 0;
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
if (row[5] == 'YES') {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
};
您可以使用
class Name {
@JsonProperty("name")
String name;
Name () {
}
}
这将自动反序列化。在序列化时,它将执行相同的操作。