首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >深度合并JSON数据

深度合并JSON数据
EN

Stack Overflow用户
提问于 2014-01-28 14:41:41
回答 2查看 2.1K关注 0票数 1

是否可以使用lift JSON、argonaut等对JSON结构进行深度合并

代码语言:javascript
复制
{
"metrics": [{
    "name": "abcde",
    "tags": {
        "oId": ["pqrs"],
        "uuid": ["A123-B234"],
        "entityType": ["test"],
        "entityName": ["test"]
    },
    "aggregators": [{
        "name": "sum",
        "sampling": {
            "value": 40,
            "unit": "seconds"
        }
    }]
}],
"cache_time": 0,
"start_relative": {
    "value": 8,
    "unit": "hours"
}
}

我正在尝试将一个新属性("instance“:"PQRSTUW”)深度合并到"metrics“/ "tags”结构中

屈从

代码语言:javascript
复制
  {
"metrics": [{
    "name": "abcde",
    "tags": {
        "orgId": ["pqrs"],
        "vcuuid": ["A123-B234"],
        "entityType": ["test"],
        "entityName": ["test"],
        "instance" : ["PQRSTUW"]
    },
    "aggregators": [{
        "name": "sum",
        "sampling": {
            "value": 40,
            "unit": "seconds"
        }
    }]
}],
"cache_time": 0,
"start_relative": {
    "value": 8,
    "unit": "hours"
}
}

这个是可能的吗?

EN

回答 2

Stack Overflow用户

发布于 2014-01-29 17:17:24

您可以使用Jackson库。如下例所示:

代码语言:javascript
复制
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class JacksonProgram {

    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();

        ArrayNode instanceArray = new ArrayNode(mapper.getNodeFactory());
        instanceArray.add("PQRSTUW");

        JsonNode rootNode = mapper.readTree("{... json ...}");
        JsonNode metricsNode = rootNode.get("metrics");
        JsonNode firstArrayElement = metricsNode.elements().next();

        ObjectNode tagsNode = (ObjectNode)firstArrayElement.get("tags");
        tagsNode.put("instance", instanceArray);

        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode));
    }
}

上面的程序打印:

代码语言:javascript
复制
{
  "metrics" : [ {
    "name" : "abcde",
    "tags" : {
      "oId" : [ "pqrs" ],
      "uuid" : [ "A123-B234" ],
      "entityType" : [ "test" ],
      "entityName" : [ "test" ],
      "instance" : [ "PQRSTUW" ]
    },
    "aggregators" : [ {
      "name" : "sum",
      "sampling" : {
        "value" : 40,
        "unit" : "seconds"
      }
    } ]
  } ],
  "cache_time" : 0,
  "start_relative" : {
    "value" : 8,
    "unit" : "hours"
  }
}

  • Jackson JSON Processing API in Java Example Tutorial
票数 3
EN

Stack Overflow用户

发布于 2014-01-28 15:52:02

Argonaut在Json类型上有一个深度合并方法,它就是这样做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21398619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档