如果不反序列化和重新序列化以下深层嵌套的 JSON 字符串(如果可能的话),如何从任何嵌套级别删除名称为“REMOVEME”的任何键?
尝试过:
不情愿地尝试反序列化为 JsonObject
/LinkedHashMap
以在有问题的键上使用 node.remove(e.getKey())
遍历结构,但是Gson会抛出并发修改异常,而Jackson需要全反序列化。
之前:
{
"a": {
"REMOVEME" : "unwanted",
"b": {
"REMOVEME" : "unwanted",
"c": {
"d": {
"REMOVEME" : "unwanted",
"something": "default",
"e": {
"f": {
"REMOVEME" : "unwanted",
"g": {
"REMOVEME" : "unwanted",
"h": {
... ,
之后:
{
"a": {
"b": {
"c": {
"d": {
"something": "default",
"e": {
"f": {
"g": {
"h": {
... ,
最佳答案
我不确定您尝试从节点中删除属性的方式,但可以删除我使用 jackson 完成的属性
String json = "{\n" +
" \"a\": {\n" +
" \"REMOVEME\" : \"unwanted\",\n" +
" \"b\": {\n" +
" \"REMOVEME\" : \"unwanted\"\n" +
" }\n" +
" }\n" +
"}";
JsonNode node = objectMapper.readTree(json);
ObjectNode node1 = (ObjectNode) node.get("a");
node1.remove("REMOVEME");
System.out.println(node1); // {"b":{"REMOVEME":"unwanted"}}
System.out.println(node); // {"a":{"b":{"REMOVEME":"unwanted"}}}
关于java - 在不反序列化的情况下从 JSON 字符串中的任何位置删除键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58020133/