问题从Json Response中提取所需数据

时间:2015-10-08 09:23:10

标签: java json jsonobject

我的Json回复如下:

{
    "oAuthClientResponse": {
    "grantTypes": [
        "client_credentials",
        "urn:ietf:params:oauth:grant-type:jwt-bearer"
    ],
    "appId": "0e0da052-baab-4e86-a826-edfcaadbd93b",
    "certAlias": "tenant_269869150664042.st2Oauth.st2Oauth_svc_269869150693042_st2_client_OAUTHCLIENT.cert",
    "clientCertificate": "MIIC",
    "paramList": null,
    "audiences": [
        "http://svc.com/EndPoint/st2/CommonApi::RW",
        "http://svc.com/EndPoint/st2/CommonApi::RO"
    ],
    "isDisabled": "false",
    "clientMetadata": {
        "isTenantManaged": "false",
        "isTrusted": "true"
    },
    "activityData": {
        "createdOn": "08/10/2015 02:15:55"
    },
    "tenant": "tenant_269869150664042",
    "description": "st2Oauth_svc_269869150693042_st2_client_OAUTHCLIENT",
    "name": "st2Oauth_svc_269869150693042_st2_client_OAUTHCLIENT",
    "appSecret": "EghTRToAFJUWHrsnXlK5",
    "clientType": "CONFIDENTIAL_CLIENT"
    }
}

我想读一下观众的价值。

String value = jObject.getJSONObject("oAuthClientResponse").getString(
                    "audiences");

我正在获得价值:

"audiences": [
    "http://svc.com/EndPoint/st2/CommonApi::RW",
    "http://svc.com/EndPoint/st2/CommonApi::RO"
]

现在我无法提取受众群体的价值。

http://svc.com/EndPoint/st2/CommonApi::RW   and
http://svc.com/EndPoint/st2/CommonApi::RO

请建议。

2 个答案:

答案 0 :(得分:0)

使用getJSONArray()代替getString()

JSONArray audiences = jObject.getJSONObject("oAuthClientResponse")
                             .getJSONArray("audiences");

然后您可以使用索引

检索单个值
System.out.println(audiences.getString(0)); // http://svc.com/EndPoint/st2/CommonApi::RW
System.out.println(audiences.getString(1)); // http://svc.com/EndPoint/st2/CommonApi::RO

答案 1 :(得分:0)

String value = jObject.getJSONObject("oAuthClientResponse").getString(
                "audiences");
value = value.subString(value.indexOf('['))
value = value.replace("[","");
value = value.replace("]","");
value = value.replace("\"","");
StringTokenizer stringTokenizer = new StringTokenizer(
                    actualOutput, ",");
while (stringTokenizer.hasMoreElements()) {
      String value = (String) lineTokenizer.nextElement();
      System.out.println(value)
}