以下是一个工作代码,有助于相应地转换Object中的JSON。如果String为values = [
{ name: 'Name1', index:0 },
{ name: 'Name2', index:1 },
{ name: 'Name1', index:2 },
{ name: 'Name2', index:3 },
{ name: 'Name1', index:4 },
]
// check an array for an object with a matching name property
// `some` will return early so you don't need to process the whole array
// if a match is found
const contains = (name, arr) => arr.some(item => item.name === name)
// reduce the array to keep the value contained
const output = values.reduce((acc, value) => {
if (!contains(value.name, acc)) {
return acc.concat(value)
}
return acc
}, [])
console.log('first unique', output)
,则将其视为null。
有2个自定义反序列化器,即nil
和MyOwnStringDeserializer
。我对MyOwnListDeserializer
反序列化器不满意,因为它实际上是根据与MyOwnListDeserializer
中定义的规则进行字符串比较。但我不能也不知道如何将MyOwnStringDeserializer
应用到MyOwnStringDeserializer
。
有没有办法让我这样做,简化MyOwnListDeserializer
?或者甚至更好,如果有一种方法只使用一个自定义反序列化器,仍然可以达到相同的结果?
MyOwnListDeserializer
答案 0 :(得分:1)
您正在寻找的方法是JsonDeserializationContext.deserialize()
。根据有关如何导致无限循环的警告,这将调用您已设置的任何相关自定义反序列化器。
我相信用循环subItems
替换循环内MySubItems subItems = context.deserialize(element, MySubItems.class);
的初始化将会有效,只留下那个并在循环体中检查list.add(subItems)
。< / p>