2015-04-16 14 views
1

我现在有这个JSON获取对象键,并用它作为一个属性杰克逊

输入

[ 
    { 
     "A": { 
      "name": "Dog" 
     } 
    }, 
    { 
     "B": { 
      "name": "Cat" 
     } 
    } 
] 

我有以下类别:

public class Pet { 

    @JsonProperty("name") 
    String name = ""; 

    @JsonIgnore 
    String id = ""; 
} 

我想有此输出

注:(这是反序列化对象的只是一种表象)

Pet [ name = "Dog" , id = "A"], 
Pet [ name = "Cat" , id = "B"] 
+1

你想要的是不是一个有效JSON语句。你可以实现的是'[{name =“Dog”,id =“A”},{..}]'但没有“Pet”语句。 – Robert

回答

2

你需要有List<Pet>,不PetList类。在这种情况下,杰克逊将做你想做的 - [ { pet1..}, {pet2...} ]Pet将有nameid

编辑:如果你想

[ 
    { 
     "A": { 
      "name": "Dog" 
     } 
    }, 
    { 
     "B": { 
      "name": "Cat" 
     } 
    } 
] 

,那么你需要把一个Map<String, IdClass>到您Pet,把这个地图"A": new IdObject(),并IdObject应该有String name = "Dog"

+0

是啊我忘了它应该是''列表'',我已经更新了我的帖子。将''id''属性从对象的关键字中取出? – bman

+0

如果您在'id'上提供了@JsonIgnore,那么不应该,它不应该被序列化 –

+0

即使我删除了@ JsonIgnore这个id不在对象内部作为一个属性,它被用作关键字。看看这个http://i.imgur.com/8nuwtmn.png – bman