我有以下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。
非常感谢任何帮助。
答案 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