当前位置: 首页 > 知识库问答 >
问题:

无法将字符串映射到对象[重复]

丘智志
2023-03-14

我有一个字符串格式的JSON值,如下所示。

{
    "Sample": {
        "name": "some name",
        "key": "some key"
    },
    "Offering": {
        "offer": "some offer",
        "amount": 100
    }
}

现在,如果我试着按如下方式映射它,它会工作并且映射得很好。

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

但是我想将其映射到自定义数据类,如下所示。

Data vo = mapper.readValue(data, Data.class);

当我这样做时,vo的结果是null。

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

@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;
}

请告诉我我做错了什么。谢谢

共有3个答案

齐朝明
2023-03-14

这可能是由于json字符串和Demo模型中字段的映射名称不同。json字符串中的“样本”,但模型类中的“样本”。

您可以使用@JsonProperty

@JsonProperty("Sample")
private Sample sample;
@JsonProperty("Offering")
private Offering offering;
东郭昌胤
2023-03-14

有两种选择:

>

  • 如果您可以更改您的json-您必须将Sample更改为SampleOffering更改为提供

    数据类更改为:

    @Getter
    @Setter
    public class Data {
        @JsonProperty("Sample")
        private Sample sample;
    
        @JsonProperty("Offering")
        private Offering offering;
    }
    

    在第二个选项中,您必须告诉Jackson您的输入json的哪些属性要映射到类的哪些属性,因为默认情况下,它将尝试映射到小写属性名称。

  • 谷梁襦宗
    2023-03-14

    这里的Case这个词似乎有问题。它是json中的“示例”。但它的“示例”在java文件中。同样地,我们也可以提供。

    如果您想在不更改大小写的情况下映射,您当然可以使用@JsonProperty。

     类似资料:
    • 我是Mapstruct的新手。我有一个Word对象,它包含一个字符串值和一组它自己,我想把它映射到WordDTO,它包含一个值和一组字符串值。我不知道怎么做。正如我在注释中所说,mapstruct不能映射两个对象是有道理的,但如果它有帮助,我将错误放在下面: 我为映射实现了这个接口: 谢谢你的帮助。

    • 我正试图利用谷歌电子表格(谷歌脚本)中的地图功能,使用API从Bittrex获取我的帐户硬币余额。这是我的JSON对象: 理想情况下,我希望根据结果中的键和使用每个对象数据的基础行自动填充标题行。我看到了spme解决方案如何为每种或更复杂的方式使用。但我想这可以通过映射来实现。下面是我如何映射顶行,但不知道如何映射值: 谷歌电子表格中的预期输出为

    • 问题内容: 我有一个JSON响应,我需要将对应的JSON字符串映射到特定的Response类,是否有任何工具或框架可以做到这一点。 响应类为: Json响应字符串为{“ 0”:{“ 0”:“ Rockey”,“ 1”:“ John”}} 我将Apache CXF Framework与Jettison一起使用,因为JSON Provider还使用JAXB将数据连接到低带宽客户端。 请注意,我要将数字

    • 问题内容: 我想创建一个地图,可以将其转换为json对象,例如 但是golang指定使用类型声明地图,因此我可以使用map [string] string或map [string] int。我如何创建上述的json对象? 注意:直到运行时或需要创建json对象时,我才知道需要哪些数据和/或类型。因此,我不能只创建像 问题答案: 您可以随时使用存储任何类型。如包装袋中的文件所述: 若要将JSON解组

    • 我正在使用以下代码来包含枚举值和与之关联的相应字符串。我想知道是否有更简单的方法来实现这一点?