fastjson 处理字段本身为json值

有如下结构

private int id;
private String name;
private String extra; //保存的为json字符串
// 省略.....

如代码所示,在转换json的时候,会把extra当作普通字符串来处理,怎样才能直接当作json解析呢?

使用@JsonRawValue可以达到这种效果,但是将json转换为对象的时候就不行了,报错了

阅读 4.8k
3 个回答

已经解决了,是我自己测试的时候忘记少加了一层转义字符

private String id;

    private String name;

    @JsonRawValue
    private String extra;

    public String getName() {
        return name;
    }

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

    public String getExtra() {
        return extra;
    }

    public void setExtra(String extra) {
        this.extra = extra;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public static void main(String[] args) {
        TestPOJO testPOJO = new TestPOJO();
        testPOJO.setId("asdad123AS");
        testPOJO.setName("demo");
        testPOJO.setExtra("{\"abc\":\"11\",  \"cd\":\"hh\"}");
        System.out.println(JsonUtils.convertJson(testPOJO));
        String json = "{\"name\":\"demo\",\"extra\":\"{\\\"abc\\\":\\\"11\\\",  \\\"cd\\\":\\\"hh\\\"}\",\"id\":\"asdad123AS\"}";
        TestPOJO testPOJO1 = JsonUtils.convertJsonToObject(json, TestPOJO.class);
        System.out.println(testPOJO1.getExtra());
        System.out.println(JsonUtils.convertJson(testPOJO1));
    }

输出结果

{"id":"asdad123AS","name":"demo","extra":{"abc":"11",  "cd":"hh"}}
{"abc":"11",  "cd":"hh"}
{"id":"asdad123AS","name":"demo","extra":{"abc":"11",  "cd":"hh"}}

extra转换成json对象。

JSONObject obj = JSONObject.parseObject(extra);

报的错误是什么?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题