Java Jackson ObjectMapper-带“的属性”_&引用;未映射

Java Jackson ObjectMapper-带“的属性”_&引用;未映射,java,android,json,jackson,Java,Android,Json,Jackson,我在以下情况下使用ObjectMapper,然而,Person类有一个JSON属性“last_name”,当“name”属性映射良好时,它似乎没有被映射。我在下面列出了我的个人课程。任何可能发生这种情况的原因都是值得赞赏的。正在使用Jackson core/mapper 1.8.5 ObjectNode node = (ObjectNode) row.getDocAsNode(); try { Person person = mapper.readValue(node, Per

我在以下情况下使用ObjectMapper,然而,Person类有一个JSON属性“last_name”,当“name”属性映射良好时,它似乎没有被映射。我在下面列出了我的个人课程。任何可能发生这种情况的原因都是值得赞赏的。正在使用Jackson core/mapper 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();
    }
人员类别:

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

}

JavaBean规范定义了期望的映射;因此,使用method
getLastName()
意味着只映射确切的属性“lastName”

要映射“姓氏”,您有两个选项:

  • 在get方法旁边使用
    @JsonProperty(“last_name”)
    重命名所使用的JSON属性
  • 使用注册为“ObjectMapper.setNamingStrategy()”的
    PropertyNamingStrategy
    (如
    PropertyNamingStrategy.LowercaseWiredCoresStrategy
    )更改Bean属性映射JSON名称的方式

如果所有数据都使用不同于JavaBean命名约定(驼峰式)的命名约定,则后一种方法是有意义的。前者更适合一次性更改。

JavaBean规范定义了预期的映射;因此,使用method
getLastName()
意味着只映射确切的属性“lastName”

要映射“姓氏”,您有两个选项:

  • 在get方法旁边使用
    @JsonProperty(“last_name”)
    重命名所使用的JSON属性
  • 使用注册为“ObjectMapper.setNamingStrategy()”的
    PropertyNamingStrategy
    (如
    PropertyNamingStrategy.LowercaseWiredCoresStrategy
    )更改Bean属性映射JSON名称的方式
如果所有数据都使用不同于JavaBean命名约定(驼峰式)的命名约定,则后一种方法是有意义的。前者更适合一次性更改。

我使用了@SerializedName(“属性值加下划线”),这对我很有用

希望这有帮助

更多细节:

我使用了@SerializedName(“属性值加下划线”),这对我很有用

希望这有帮助

更多详情: