java - 为什么 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"}]}
这里有一个类似的问题,但没有可靠的答案。
解决方案
由于您在JsonNode
域中工作,因此您希望 Jackson 将您的命令转换为 a JsonNode
,而不是 a String
。像这样:
ObjectNode batch = OBJECT_MAPPER.createObjectNode();
JsonNode commands = OBJECT_MAPPER.valueToTree(triggerCommands.getCommands());
batch.set("commands", commands);
推荐阅读
- python - 在 django_cron 上运行特定的 views.py 方法
- php - Symfony:自动配置发生在哪里?
- sql - 从字符串转换为uniqueidentifier sql时转换失败
- javascript - 为什么我的异步函数在我尝试访问它时返回未定义?
- reactjs - 函数 CollectionReference.add() 要求它的第一个参数是对象类型,但它是:未定义
- javascript - javascript记忆游戏,需要在游戏结束时添加祝贺信息
- javascript - 动态添加/删除行和自动计算总计 - 删除内部行时出现计算问题
- html - WordPress 显示不同高度的图片库
- java - 如何通过按下按钮并更改按钮图标从数组列表中获取值
- angular - ng-repeat 值未定义