首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JsonNode to object?

JsonNode to object?
EN

Stack Overflow用户
提问于 2016-01-14 17:51:02
回答 1查看 7.2K关注 0票数 2

我正在为POJO类Attribute编写JsonDeserialzer

代码语言:javascript
复制
public class AttributeDeserializer extends JsonDeserializer<Attribute> {

        @Override
        public Attribute deserialize(JsonParser jp, DeserializationContext ctxt) 
          throws IOException, JsonProcessingException {

            JsonNode node = jp.getCodec().readTree(jp);

            String name =  node.get("name").asText();

            //String value = node.get("value").asText();

            Attribute attr = new Attribute();
            attr.setName(name);
            attr.setValue(value);

            return attr;
        }

Attribute类有两个变量namevalue,其中name是String类型,value是Object类型。

我知道如何使用以下命令从JsonNode获取字符串值

代码语言:javascript
复制
node.get("name").asText()

,但是值是Object类型,它可以是列表、字符串或任何其他类型。

如何在反序列化程序中创建Attribute对象??

属性类:

代码语言:javascript
复制
public class Attribute {

    protected String name;
    protected Object value;

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

    public Object getValue() {
        return value;
    }
    public void setValue(Object value) {
        this.value = value;
    }

}
EN

回答 1

Stack Overflow用户

发布于 2016-01-15 12:58:45

我是这样解决的:

代码语言:javascript
复制
  public class AttributeDeserializer extends JsonDeserializer<Attribute> {

        @Override
        public Attribute deserialize(JsonParser jp, DeserializationContext ctxt) 
          throws IOException, JsonProcessingException {

            JsonNode node = jp.getCodec().readTree(jp);

            String longName = getLongName(node.get("name").asText());
            System.out.println("Translated name: " + name);

            ObjectMapper objMapper = new ObjectMapper();

            ObjectNode o = (ObjectNode)node;
            o.put("name", name);

            Attribute attr = objMapper.convertValue(o, Attribute.class);

            return attr;
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34786342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档