Java从JSON中提取信息

时间:2018-03-30 10:43:59

标签: java json jenkins

我有以下JSON对象:

{
  "_class": "hudson.model.FreeStyleBuild",
  "actions": [
    {
      "_class": "hudson.model.CauseAction",
      "causes": [
        {
          "_class": "hudson.model.Cause$UserIdCause",
          "shortDescription": "Started by user SYSTEM",
          "userId": "SYSTEM",
          "userName": "SYSTEM"
        },
        {
          "_class": "hudson.model.Cause$UserIdCause",
          "shortDescription": "Started by user SYSTEM",
          "userId": "SYSTEM",
          "userName": "SYSTEM"
        },
        {
          "_class": "hudson.model.Cause$UserIdCause",
          "shortDescription": "Started by user SYSTEM",
          "userId": "SYSTEM",
          "userName": "SYSTEM"
        },
        {
          "_class": "com.sonyericsson.rebuild.RebuildCause",
          "shortDescription": "Rebuilds build #1",
          "upstreamBuild": 1,
          "upstreamProject": "gcimpoies-test5",
          "upstreamUrl": "job/gcimpoies-test5/"
        },
        {
          "_class": "com.sonyericsson.rebuild.RebuildCause",
          "shortDescription": "Rebuilds build #1",
          "upstreamBuild": 1,
          "upstreamProject": "gcimpoies-test5",
          "upstreamUrl": "job/gcimpoies-test5/"
        }
      ]
    },
    {
      "_class": "hudson.model.CauseAction",
      "causes": [
        {
          "_class": "com.sonyericsson.rebuild.RebuildCause",
          "shortDescription": "Rebuilds build #1",
          "upstreamBuild": 1,
          "upstreamProject": "gcimpoies-test5",
          "upstreamUrl": "job/gcimpoies-test5/"
        }
      ]
    },
    {

    },
    {
      "_class": "com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction"
    },
    {

    },
    {

    },
    {

    }
  ],
  "artifacts": [

  ],
  "building": false,
  "description": null,
  "displayName": "#2",
  "duration": 15,
  "estimatedDuration": 61,
  "executor": null,
  "fullDisplayName": "gcimpoies-test5 #2",
  "id": "2",
  "keepLog": false,
  "number": 2,
  "queueId": 6,
  "result": "FAILURE",
  "timestamp": 1522153325922,
  "url": "http://localhost:8080/job/gcimpoies-test5/2/",
  "builtOn": "",
  "changeSet": {
    "_class": "hudson.scm.EmptyChangeLogSet",
    "items": [

    ],
    "kind": null
  },
  "culprits": [

  ]
}

我想提取用户名: SYSTEM

我尝试过使用JsonSlurper,但没有运气。我认为正确的方法是使用JSONObject。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用Google Gson解析java中的json。这里我粘贴代码将json转换为Map。这样您就可以简单地将json作为地图对象访问。

Map map = gson.fromJson(jsonString, Map.class);
System.out.println(map);

有关详情,请参阅this thread

答案 1 :(得分:0)

Gson gson = new Gson();
    Map buildDetailsMap;
    buildDetailsMap = gson.fromJson(json, Map.class);
    if (buildDetailsMap != null) {
        List actions = (List) buildDetailsMap.get("actions");
        Map actionZero = (Map) actions.get(0);
        List causes = (List) actionZero.get("causes");
        Map causeZero = (Map) causes.get(0);
        username = (String) causeZero.get("userName");
    }

这就是我做的。感谢SV Madhava Revy