java - 无法理解 ObjectMapper writeValueAsString(Object value) 方法的行为
问题描述
我ObjectMapper
用来获取价值String
,JsonNode
但看到这种奇怪的行为。我在这里遗漏了一些东西。有人可以解释为什么实际结果double quotes
中有吗?我希望这个测试通过,但断言失败:
单元测试:
@Test
public void testGetValueAsString() throws JsonProcessingException {
ObjectMapper fasterXmlMapper = new com.fasterxml.jackson.databind.ObjectMapper();
JsonNode node = new TextNode("{}");
String valueAsString = fasterXmlMapper.writeValueAsString(node);
assertEquals("{}", valueAsString);
}
测试运行输出:
expected:<[{}]> but was:<["{}"]>
Expected :{}
Actual :"{}"
在这里,我指的是以下库和类:
我在用jackson-databind-2.9.9.jar
com.fasterxml.jackson.databind.JsonNode
和
com.fasterxml.jackson.databind.ObjectMapper
解决方案
您可以在json.org上阅读string
:
字符串是零个或多个 Unicode 字符的序列,用 双引号括起来,使用反斜杠转义。字符表示为单个字符串。字符串与 C 或 Java 字符串非常相似。
这就是这样com.fasterxml.jackson.databind.node.TextNode
做的,{}
用双引号括起来给出"{}"
.
如果你想有一个空的JSON Object
,你可以创建com.fasterxml.jackson.databind.node.ObjectNode
实例:
JsonNode node = mapper.getNodeFactory().objectNode();
推荐阅读
- python - 带有 DASH 的仪表板 - 参数问题 dcc.graph()
- r - 如何删除具有一定观察量的所有唯一值?
- python - Pandas read_excel 返回对象类型的列
- azure - Azure 存储:如何将容器数据移动到存档层
- python - 如何在 Django 项目中使用 PostgreSQL 的存储过程或函数
- javascript - Angular UI 中的数据绑定——是推还是拉?我可以让它更快吗?
- sql - 在 Postgres 中查询 xmin 列在查询中产生 xid
- c# - 如何使用 C# 从 CloudFront 获取签名 URL?
- javascript - React JS - 项目构建后对象未呈现
- python - 使用 cx_Oracle 调用函数时,表达式类型错误