【问题标题】:error while mapping json string to model class object将json字符串映射到模型类对象时出错
【发布时间】:2022-01-03 03:14:46
【问题描述】:

下面是我要读取并映射到类模型对象的 json。

{
    "models": [
        {
            "model": {
                "code": "YY77A",
                "type": "AUTO",
                "source": "IN",
                "name": "Sams",
                "feature_types": [
                    {
                        "feature_type": {
                            "code": "8H",
                            "desc": "All Models"
                        }
                    },
                    {
                        "feature_type": {
                            "code": "my20",
                            "desc": "MY20"
                        }
                    },
                    {
                        "feature_type": {
                            "code": "my21",
                            "desc": "MY21"
                        }
                    }
                ]
            }
        },
        {
            "model": {
                "code": "PPuY",
                "type": "HOM",
                "source": "IN",
                "name": null,
                "feature_types": [
                    {
                        "feature_type": {
                            "code": "8H",
                            "desc": "All Models"
                        }
                    },
                    {
                        "feature_type": {
                            "code": "MY21",
                            "desc": "MY21"
                        }
                    }
                ]
            }
        }
    ]
}

模型类:

class FeatureType2{
    public String code;
    public String desc;
}

class FeatureType{
    public FeatureType feature_type;
}

class Model2{
    public String code;
    public String type;
    public String source;
    public String name;
    public List<FeatureType> feature_types;
}

class Model{
    public Model model;
}

public class Root{
    public List<Model> models;
}

以下是用于将 json 映射到模型 (Root.java) 的代码

// import com.fasterxml.jackson.databind.ObjectMapper; // version 2.11.1
// import com.fasterxml.jackson.annotation.JsonProperty; // version 2.11.1
ObjectMapper om = new ObjectMapper();
Root root = om.readValue(myJsonString), Root.class);  

以下是例外:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "code" (
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "code" (class com.samp.qc.Model), not marked as ignorable (one known property: "model"])
at [Source: java.io.StringReader@15f53014; line: 1, column: 30] (through reference chain: com.samp.qc.Root["models"]->
com.samp.qc.Model["model"]->com.samp.qc.Model["code"])

当将 json 字符串映射到模型对象时,它会显示上述异常。将 json String 映射到 Model 类对象的更好方法是什么。

【问题讨论】:

    标签: java json objectmapper


    【解决方案1】:

    您在 Model & FeatureType 类中犯了小错误。我更正如下,它对我有用。

        public class FeatureType2{
            public String code;
            public String desc;
        }
    
        public class FeatureType{
            public FeatureType2 feature_type;
        }
    
        public class Model2{
            public String code;
            public String type;
            public String source;
            public String name;
            public List<FeatureType> feature_types;
        }
    
        public class Model{
            public Model2 model;
        }
    
        public class Root{
            public List<Model> models;
        }
    

    如果这能解决您的问题,请告诉我。

    【讨论】:

    • 根类有 List 模型。
    • 所以你只是修正了两个错别字:1) 在FeatureType 中引用FeatureType2 feature_type,2) 在Model 中引用Model2 model
    • @AlexRudenko 是的
    • @Digsb 请在上面的帖子中查看模型类,我可以只将类 Root 作为公共类,而所有其他类没有访问修饰符,我注意到你将所有类都设为静态,是否需要静态化?
    • @user222,不需要静态,我添加它是为了让我的代码工作。就访问修饰符而言,ObjectMapper 需要可以访问类。你可以让它们成为一个内部类,但它们应该是可访问的。
    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 2019-01-25
    • 1970-01-01
    • 2018-02-10
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多