【问题标题】:Spring REST consuming JSON uppercase vs lowercaseSpring REST 使用 JSON 大写与小写
【发布时间】:2015-01-09 12:10:38
【问题描述】:

我正在尝试创建简单的 Web 服务,即从 URL 读取 JSON 并将其返回。我遵循了关于这个的 spring.io 教程。我可能遗漏了一些关于命名约定的内容?

我使用的 JSON 没有很好的命名约定。有些值是大写的,有些是小写的,有些是混合的。我所理解的与 restTemplate 正确匹配的内容我需要遵循这些名称。

我的对象结构:

public class Page {
private String name; //works
private String about; // works
private String PHONE; //does not work
private String Website; //does not work

//getters and setters
}

如果我将它们更改为公开,它们就会开始工作。

public class Page {
private String name; //works
private String about; // works
public String PHONE; //works
public String Website; //works

//getters and setters
}

这是我使用的代码部分

@RequestMapping(value = "/Test")
public Bubble getBubbleInfo(){
RestTemplate restTemplate = new RestTemplate();
Page page= restTemplate.getForObject("myURL", Page.class);
    return page;
}

我错过了什么?看起来使用私有需要经典的 lowerUpper 约定,但如果我改变它,它将无法与 JSON 正确匹配。我能以某种方式为春天命名吗?

//spring, this is PHONE
public String phone;

非常感谢。

【问题讨论】:

标签: java json spring spring-mvc resttemplate


【解决方案1】:

您可以使用@JsonProperty 注解覆盖变量名。

@JsonProperty("phone")
public String PHONE;

【讨论】:

  • 谢谢,我试过了,但结果我有:电话和电话。当我删除 getter 和 setter 时,它似乎正在工作。这意味着我不应该在那里有二传手?还是其他原因造成的?
  • 你是否也在getter/setter方法中添加了注解?
  • 基本上,如果它是私有的,则有getter和setter并注释变量声明。否则,只需注释变量声明即可修复它。
  • 谢谢!这个解决方案奏效了。只需将 @JsonProperty 注释放在变量、getter 和 setter 上,您的 restful 就可以使用和生成大写字母!
  • 非常感谢这个答案,帮助了我
猜你喜欢
  • 2010-09-19
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 2014-06-11
相关资源
最近更新 更多