我有一个特定的JSON节点,对应于import org.codehaus.jackson。JsonNode,而不是导入org.codehaus.jackson.map.JsonNode。
[
{
"givenName": "Jim",
"formattedName": "jimJackson",
"familyName": null,
"middleName": "none",
"honorificPrefix": "mr",
"honorificSuffix": "none"
},
{
"givenName": "john",
"formattedName": "johnLasher",
"familyName": null,
"middleName": "none",
"honorificPrefix": "mr",
"honorificSuffix": "none"
},
{
"givenName": "carlos",
"formattedName": "carlosAddner",
"familyName": null,
"middleName": "none",
"honorifiPrefix": "mr",
"honorificSuffix": "none"
},
{
"givenName": "lisa",
"formattedName": "lisaRay",
"familyName": null,
"middleName": "none",
"honorificPrefix": "mrs",
"honorificSuffix": "none"
},
{
"givenName": "bradshaw",
"formattedName": "bradshawLion",
"familyName": null,
"middleName": "none",
"honorificPrefix": "mr",
"honorificSuffix": "none"
},
{
"givenName": "phill",
"formattedName": "phillKane",
"familyName": null,
"middleName": "none",
"honorificPrefix": "mr",
"honorificSuffix": "none"
},
{
"givenName": "Gabriel",
"formattedName": "gabrielMoosa",
"familyName": null,
"middleName": "none",
"honorificPrefix": "mr",
"honorificSuffix": "none"
}
]
我想从上述数组的所有JSON节点中删除“familyName”和“middleName”。有没有办法做到这一点?
我最近想到了这个问题,因为我有一个不寻常的JSON片段,我需要删除其中的一个元素:
{
"allan": { "score": 88 },
"bill": { "score": 75 },
"cassie": { "score": 96 },
"warnings": [ { "name": "class_low_numbers", "message": "this class is has less than 10 students" }]
}
前三个元素表示一个人和一个相应的分数对象。最后一个“警告”,与分数对象不匹配,这就是我想删除的对象。
从上面gsteff的回答中,将rootNode作为起始JsonNode,我发现消除它的方法是迭代每个节点,将节点的对象映射版本添加到HashMap中,这是我想要的返回对象,除非它是“warnings”元素:
HashMap<String, ScoreDetails> results = new HashMap<String, ScoreDetails>();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Iterator<Map.Entry<String, JsonNode>> fields = rootNode.fields();
while (fields.hasNext()) {
Map.Entry<String, JsonNode> next = fields.next();
if (!next.getKey().equals("warnings")) {
results.put(
next.getKey(), mapper.treeToValue(next.getValue(), ScoreDetails.class));
}
}
return results;
Jackson的ObjectMapper仅用几个步骤就给出了解决方案。
将json数据保存在一个文件中,比如“data.json”。将下面的代码复制到不带import语句的函数中,然后调用该函数。生成的JSON将写入一个新文件“data1.JSON”。
import java.io.File;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(new File("data.json"));
for (JsonNode node : jsonNode) {
((ObjectNode)node).remove("familyName");
((ObjectNode)node).remove("middleName");
}
objectMapper.writeValue(new File("data1.json"), jsonNode);
我还没有测试过这个,但是我认为类似这样的东西可以满足你的要求:
import org.codehaus.jackson.node.ObjectNode;
// ...
for (JsonNode personNode : rootNode) {
if (personNode instanceof ObjectNode) {
ObjectNode object = (ObjectNode) personNode;
object.remove("familyName");
object.remove("middleName");
}
}
你也可以使用Jackon的原始解析API更有效地做到这一点,但代码会更混乱。
问题内容: 我想从JSON中删除JSON元素或整行。 我有以下JSON字符串: 问题答案: 您可以使用splice从数组中删除元素。
问题内容: 我有一个特定的JSON节点,它对应于导入org.codehaus.jackson.JsonNode,而不是导入org.codehaus.jackson.map.JsonNode。 我想从上述数组的所有JSON节点中删除“ familyName”和“ middleName”。有什么办法可以做到这一点? 问题答案: 我还没有测试过,但是我认为这样可以满足您的需求: 您还可以使用Jackon
你可以使用delete关键字来删除数组元素。如: delete myObj.sites[1];
问题内容: 我的json数组的一部分 当我console.log我得到的元素 我还有一个要搜索的唯一ID 我想在我的视频数组中找到正确的ID,然后删除整个数组元素。因此,在那种情况下,我希望我的最终视频数组仅包含2个对象,而不是3个: 我的问题是如何进入阵列进行拼接。我更喜欢用jQuery 有什么帮助吗? 问题答案: 您可以使用grep: 在原始JavaScript中,您可能使用过类似的过滤器功能
问题内容: 我试图遍历对象列表,从每个对象中删除一个元素。每个对象都是换行符。我试图然后按原样保存新文件,而对象中不包含任何元素。我知道这可能是一个简单的任务,但似乎无法完成这项工作。如果有人可以伸出援手,将不胜感激。谢谢。 } 我需要删除小时元素中包含的信息,但是信息并不总是相同的。有些包含全天,有些仅包含一两天的信息。我尝试使用的代码是Pyton,我整天都在搜索该代码以解决问题。我对Pytho
问题内容: 我有一个看起来像这样的json数组: 我想有一个函数来删除“孩子”为空的元素。我该怎么做?我不是要答案,只是建议 问题答案: 要遍历对象的键,请使用循环: 要测试空元素的所有元素,可以使用递归方法:遍历所有元素,然后也递归地测试它们的孩子。 可以使用关键字删除对象的属性: 说明文件: https://developer.mozilla.org/zh-CN/docs/JavaScript