将 Jackson 对象转换为 JSONObject java

2022-09-03 13:54:45

我正在尝试弄清楚如何将 Jackson 对象转换为 JSONObject?

我尝试过,但我不相信这是正确的方法。

public JSONObject toJSON() throws IOException {
    ObjectMapper mapper = new ObjectMapper();       
    return new JSONObject(mapper.writeValueAsString(new Warnings(warnings)));
}

答案 1

你正在做的方式是工作得很好,因为我也用这种方式来制作JSONobject。

这是我的代码

 public JSONObject getRequestJson(AccountInquiryRequestVO accountInquiryRequestVO) throws  JsonGenerationException, JsonMappingException, IOException {
          ObjectMapper mapper = new ObjectMapper();
          JSONObject jsonAccountInquiry;

           jsonAccountInquiry=new JSONObject(mapper.writeValueAsString(accountInquiryRequestVO));

  return jsonAccountInquiry;  
 }

它对我来说很好。但你总是可以使用JsonNode,这里也是示例代码

JsonNode jsonNode=mapper.valueToTree(accountInquiryRequestVO);

它非常易于使用。


答案 2

现在,您正在将 Pojo 序列化为 ,然后对其进行解析并将其转换为 .StringStringHashMapJSONObject

这是非常低效的,不会带来任何好处。

Jackson 已经提供了一个 ObjectNode 类,用于作为 JSON 对象与 Pojo 进行交互。因此,只需将对象转换为 .下面是一个工作示例ObjectNode

public class Example {
    public static void main(String[] args) throws Exception {
        Pojo pojo = new Pojo();
        pojo.setAge(42);
        pojo.setName("Sotirios");
        ObjectMapper mapper = new ObjectMapper();
        ObjectNode node = mapper.valueToTree(pojo);
        System.out.println(node);
    }
}

class Pojo {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

否则,你这样做的方式很好。