Ale*_*lex 1 java android json jackson
我在以下情况下使用ObjectMapper,但是,Person类的JSON属性为"last_name",当"name"属性映射正确时,它似乎没有被映射.我在下面列出了我的Person类.任何可能发生这种情况的原因都值得赞赏.杰克逊核心/映射器1.8.5正在使用.
ObjectNode node = (ObjectNode) row.getDocAsNode();
try {
Person person = mapper.readValue(node, Person.class);
tt.setText(person.getName());
bt.setText(person.getLastName());
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
人员类:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {
private String _name;
private String _last_name;
public String getName() { return _name; }
public String getLastName() { return _last_name; }
public void setName(String str) { _name = str; }
public void setLastName(String str) { _last_name = str; }
}
Run Code Online (Sandbox Code Playgroud)
Java Bean规范定义了预期映射的内容; 所以有方法getLastName()意味着只会映射精确的属性"lastName".
要映射"last_name",您有两个选项:
@JsonProperty("last_name")旁边的get方法重命名使用的JSON属性PropertyNamingStrategy(like PropertyNamingStrategy. LowerCaseWithUnderscoresStrategy)来改变Bean属性映射JSON名称的方式如果所有数据都使用不同于Java Bean命名约定(camel case)的命名约定,则后一种方法是有意义的.对于一次性更改,前者更好.