- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Java 菜鸟,正在努力进行类型转换。我有一个如下所示的 JSON 对象:
[
{
"A":{
"B":{
"C":"Message",
"D":"FN1"
}
}
}
]
我想将其转换为:
[
{
"A":{
"B": "My String Message"
}
}
]
我可以用新的 JSON 节点替换旧的 JSON 节点,但无法用 TextNode 替换它,尝试了多个失败的选项,如下所示:
JsonNode newNode = new TextNode("My String Message");
ObjectNode nodeObj = (ObjectNode) jsonNode;
nodeObj.removeAll();
nodeObj.set(newNode);
最佳答案
您的代码只是出现了一个小问题。添加新文本条目时,必须提供要与新文本节点关联的键值。所以这一行:
nodeObj.set(newNode);
只需这样:
nodeObj.set("B", newNode);
这是一个完整的示例,它只执行您在问题中显示的内容,合并您提供的代码,仅进行一个小修复:
public static void main(String... args) throws IOException {
// Read in the structure provided from a text file
FileReader f = new FileReader("/tmp/foox.json");
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(f);
// Print the starting structure
System.out.println(rootNode);
// Get the node we want to operate on
ObjectNode jsonNode = (ObjectNode)rootNode.get(0).get("A");
// The OPs code, with just the small change of adding the key value when adding the new String
JsonNode newNode = new TextNode("My String Message");
ObjectNode nodeObj = (ObjectNode) jsonNode;
nodeObj.removeAll();
nodeObj.set("B", newNode);
// Print the resulting structure
System.out.println(rootNode);
}
结果输出:
[{"A":{"B":{"C":"Message","D":"FN1"}}}]
[{"A":{"B":"My String Message"}}]
更新:根据评论中的讨论,要进行您所说明的更改,您必须有权访问与键 A 关联的 ObjectNode。正是这个 ObjectNode 将 B 与包含 C 和 D 的 ObjectNode 关联起来。因为您想要更改 B 关联的值(您希望它与 TextNode 而不是 ObjectNode 关联),您需要访问与 A 关联的 ObjectNode。如果您只有一个指向包含 C 和 D 的 ObjectNode 的指针,你无法做出你想做的改变。
关于Java 用字符串值替换 JsonNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55661698/
我正在使用 jackson 库。我有很多 java 对象,它们只不过是 jsonNode 的包装器。因此想要将这些 jsonNodes 列表转换为单个 jsonNode。我怎样才能做到这一点。我试过这
我有主 JsonNode,{{k1:v1} = s1,{k2:v2} = s2,{k3:v3} = s3} 我单独获取一个节点键 {k1 : v1} 并将其分配给另一个变量并将其更新为 {k1 : n
我正在用 Java 编写 Play 2.3.2 应用程序。 在我的应用程序中,我调用了用 Scala 编写的其他模块的方法。 此方法返回一个 Json 响应,我尝试使用 WS 获取该响应。 这是我的方
我在写这篇文章时需要一些指导,以便我理解这个概念: 基本上,我需要在 String 和 JsonNode 之间进行转换,并且我已经看到了一个说明要做什么的答案,但作为新手开发人员,我不确定这意味着什么
我有以下 Json { "Parent": { "pk1": "pv1", "pk2": "pv2", "Child": {
我是 Java 菜鸟,正在努力进行类型转换。我有一个如下所示的 JSON 对象: [ { "A":{ "B":{
我遇到了转换错误,但不知道如何解决。 //get my json file as Map Map cm = null; try { cm = mapper.readValu
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 3 年前。 我需要获取此 arrayNode
我刚刚从 sourceforge.net 安装了 libjson。我尝试执行一个简单的程序但是我得到了这个错误 ‘JSONNode’ was not declared in this scope 这是
我在 Java 中使用 Jackson 库生成了以下 Json: { "name": "name1", "version": "0.0.1", "storage": {
我有以下 JSON 文件。 { "data": { "k1": "v1", "k2": "v2", ... } } 有什么方法可以将这些键和值作为 Map 获取吗?使用
通过 Play WS API,我得到了一个 Response 对象。因为它包含我调用的 JSON response.asJson() 这工作得很好。现在我想以 pretty-print 版本返回这个
我有这个json: { "text":[ {"a":1}, {"b":2} ] } 我有这个代码: JsonNode jsonNode = (new O
我正在尝试更新 expiryDate将嵌套的 JsonObject 中的变量设置为当前日期,JSON 的结构如下: { "expiryDate" : { "type" : "S
如何将 JsonNode 作为 java.email 中的电子邮件附件作为 json 文件发送 // Json node bit JsonNode requestBody = request().
考虑以下 Java 类定义。 CrudOperation.java: package com.cyberfront.test.json.nll.demonstration; import com.fa
我有一个类: Class myClass { @JsonProperty("status") boolean status; public boolean getStatus(
我正在从 cassandra 表中读取数据记录。创建我构建的 Java 对象。使用我从数据记录中获得的值设置所有值(我使用 jackson 从记录中获取这些值)。当我查看 json 请求时,我看到一个
我有一个Jackson子类型 ObjectNode 的 JsonNode: ObjectNode node = parent.path('somepath'); node 有许多子字段,例如您在这个
我有以下代码,它从 JsonNode 返回 string 的 list: public static List asList(final JsonNode jsonNode) {
我是一名优秀的程序员,十分优秀!