无法将字符串映射到对象

kar*_*kar 5 java jackson

我有一个String格式的JSON值,如下所示。

{
    "Sample": {
        "name": "some name",
        "key": "some key"
    },
    "Offering": {
        "offer": "some offer",
        "amount": 100
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试按以下方式对此进行映射,则可以正常工作并映射良好。

//mapper is ObjectMapper;
//data is the above json in String format
Map vo = mapper.readValue(data, Map.class);
Run Code Online (Sandbox Code Playgroud)

但是我想按如下方式将其映射到自定义Data类。

Data vo = mapper.readValue(data, Data.class);
Run Code Online (Sandbox Code Playgroud)

当我这样做时,vo的结果为空。

有关Data类的结构,请参阅以下内容。

@Getter
@Setter
public class Data {
    private Sample sample;
    private Offering offering;
}

@Getter
@Setter
public class Offering {
    public String offer;
    public int amount;
}

@Getter
@Setter
public class Sample {
    private String name;
    private String key;
}
Run Code Online (Sandbox Code Playgroud)

请告知我在做什么错。谢谢。

Shu*_*lag 6

这里的Word Case似乎有问题。它在您的json中的“样本”。但是它的“样本”在java文件中。对于产品也是如此。

当然,如果要映射而不更改大小写,可以使用@JsonProperty。