首页 > 解决方案 > 为什么 ObjectNode 在 Json String 中添加反斜杠

问题描述

这是我尝试将对象转换为 json String 的方式

    ObjectNode batch = OBJECT_MAPPER.createObjectNode();
    String s = OBJECT_MAPPER.writeValueAsString((triggerCommands.getCommands()));
    batch.put("commands", s);
    System.out.println("raw String= " + s);
    System.out.println("ObjectNode String = " + batch);

导致输出;

raw String= [{"cmdid":"a06c00d4-5b8b-4313-a8f3-5663dde0fa5b","type":"test"}]

ObjectNode String = {"commands":"[{\"cmdid\":\"a06c00d4-5b8b-4313-a8f3-5663dde0fa5b\",\"type\":\"test\"}]"}

我很想知道为什么当我将字符串作为 ObjectNode 的值添加时,它会得到反斜杠。我想要的只是

ObjectNode String = {"commands":[{"cmdid":"a06c00d4-5b8b-4313-a8f3-5663dde0fa5b","type":"test"}]}

这里有一个类似的问题,但没有可靠的答案。

标签: javastringobjectjacksonjackson2

解决方案


由于您在JsonNode域中工作,因此您希望 Jackson 将您的命令转换为 a JsonNode,而不是 a String。像这样:

ObjectNode batch = OBJECT_MAPPER.createObjectNode();
JsonNode commands = OBJECT_MAPPER.valueToTree(triggerCommands.getCommands());
batch.set("commands", commands);

推荐阅读