如何在Jackson上使用两种json格式

我上课的字段为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来解决该问题,或者使用反序列化列表进行映射,但是我认为这是错误的解决方案。 有没有解决这个问题的简便方法?

ldxzzm 回答:如何在Jackson上使用两种json格式

您无需为此编写自定义反序列化器, 您可以定义一个类,

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 () {
   }
} 

这将自动反序列化。在序列化时,它将执行相同的操作。

本文链接:https://www.f2er.com/2907528.html

大家都在问