【问题标题】:Java Model for Cloud Config Server ResponseCloud Config 服务器响应的 Java 模型
【发布时间】:2018-10-18 21:38:15
【问题描述】:

我正在尝试为云配置服务器响应创建一个模型对象,以便在我使用 RestTemplate 调用云配置服务器 url 时反序列化响应。当我使用很少的在线 json 到 java 生成器时,我看到生成的模型类似于下图所示。但是,“源”部分是包含键值对形式的所有属性的部分,我想要一种通用的方法来反序列化它们。当我使用生成器时,它会生成特定于我在响应中的属性的东西?我怎样才能使它通用?

JSON 数据

 {
   "name":"config",
   "profiles":[
      "dev"
   ],
   "label":null,
   "version":"b8379c098",
   "state":null,
   "propertySources":[
      {
         "name":"<url>/config-data/config-dev.properties",
         "source":{
            "cloud-switch":"on"
         }
      }
   ]

}

MyPojo

public class MyPojo
{
    private PropertySources[] propertySources;

    private String name;

    private null state;

    private null label;

    private String[] profiles;

    private String version;

    public PropertySources[] getPropertySources ()
    {
        return propertySources;
    }

    public void setPropertySources (PropertySources[] propertySources)
    {
        this.propertySources = propertySources;
    }

    public String getName ()
    {
        return name;
    }

    public void setName (String name)
    {
        this.name = name;
    }

    public null getState ()
    {
        return state;
    }

    public void setState (null state)
    {
        this.state = state;
    }

    public null getLabel ()
    {
        return label;
    }

    public void setLabel (null label)
    {
        this.label = label;
    }

    public String[] getProfiles ()
    {
        return profiles;
    }

    public void setProfiles (String[] profiles)
    {
        this.profiles = profiles;
    }

    public String getVersion ()
    {
        return version;
    }

    public void setVersion (String version)
    {
        this.version = version;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [propertySources = "+propertySources+", name = "+name+", state = "+state+", label = "+label+", profiles = "+profiles+", version = "+version+"]";
    }
}

属性来源

public class PropertySources
{
    private Source source;

    private String name;

    public Source getSource ()
    {
        return source;
    }

    public void setSource (Source source)
    {
        this.source = source;
    }

    public String getName ()
    {
        return name;
    }

    public void setName (String name)
    {
        this.name = name;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [source = "+source+", name = "+name+"]";
    }
}

来源

public class Source
{
    private String cloud-switch;

    public String getCloud-switch ()
    {
        return cloud-switch;
    }

    public void setCloud-switch (String cloud-switch)
    {
        this.cloud-switch = cloud-switch;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [cloud-switch = "+cloud-switch+"]";
    }
}

【问题讨论】:

    标签: java spring spring-boot spring-cloud


    【解决方案1】:

    将源变量设为 Map ,解决了这个问题。

    public class PropertySource {
        private String name;
    
        public String getName() { return this.name; }
    
        public void setName(String name) { this.name = name; }
    
        private Map<String, String> source;
    
        public Map<String, String> getSource() {
            return source;
        }
    
        public void setSource(Map<String, String> source) {
            this.source = source;
        }
    }
    

    【讨论】:

    • 不错...我一直认为转换为某种 pojo 不一定总是有益的。
    猜你喜欢
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多