简体   繁体   中英

How do I retrieve a specific Json element in Java

I have the following JSON:

{
    "_rallyAPIMajor": "2",
    "_rallyAPIMinor": "0",
    "_ref": "https://rally1.rallydev.com/slm/webservice/v2.0/task/115664163908",
    "_refObjectUUID": "3595aeb8-f99e-4e03-a842-9a2960833c1d",
    "_objectVersion": "3",
    "_refObjectName": "My-Task Akshay...Task created for testing",
    "FormattedID": "TA72018",
    "Name": "My-Task Akshay...Task created for testing",
    "Estimate": 10.0,
    "State": "Defined",
    "WorkProduct": {
        "_rallyAPIMajor": "2",
        "_rallyAPIMinor": "0",
        "_ref": "https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement/115663481788",
        "_refObjectUUID": "f760c23e-5d57-4b6e-bd4c-d6f1d2c26900",
        "_objectVersion": "6",
        "_refObjectName": "UserStory-2-2Test",
        "FormattedID": "US35327",
        "DirectChildrenCount": 0,
        "Name": "UserStory-2-2Test",
        "_type": "HierarchicalRequirement"
    },
    "_type": "Task"
}

I want the element Name,State and the other element Name which is in the WorkProduct. My java code what I have tried until now

for(JsonElement result : taskresponse.getResults())
        {
            JsonObject results = result.getAsJsonObject();
            System.out.println("Task :"+results.get("Name").getAsString()+
                    "\n State :"+results.get("State").getAsString()+" User Story:"+results.get("WorkProduct.Name").getAsString());
            System.out.println(results);
        }

You can try this code:

import org.json.JSONObject;

public class JSONParser {

    public static void main(String[] args) throws Exception {
        JSONObject jsonObject = new JSONObject("{\n"
                + "    \"_rallyAPIMajor\": \"2\",\n"
                + "    \"_rallyAPIMinor\": \"0\",\n"
                + "    \"_ref\": \"https://rally1.rallydev.com/slm/webservice/v2.0/task/115664163908\",\n"
                + "    \"_refObjectUUID\": \"3595aeb8-f99e-4e03-a842-9a2960833c1d\",\n"
                + "    \"_objectVersion\": \"3\",\n"
                + "    \"_refObjectName\": \"My-Task Akshay...Task created for testing\",\n"
                + "    \"FormattedID\": \"TA72018\",\n"
                + "    \"Name\": \"My-Task Akshay...Task created for testing\",\n"
                + "    \"Estimate\": 10.0,\n"
                + "    \"State\": \"Defined\",\n"
                + "    \"WorkProduct\": {\n"
                + "        \"_rallyAPIMajor\": \"2\",\n"
                + "        \"_rallyAPIMinor\": \"0\",\n"
                + "        \"_ref\": \"https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement/115663481788\",\n"
                + "        \"_refObjectUUID\": \"f760c23e-5d57-4b6e-bd4c-d6f1d2c26900\",\n"
                + "        \"_objectVersion\": \"6\",\n"
                + "        \"_refObjectName\": \"UserStory-2-2Test\",\n"
                + "        \"FormattedID\": \"US35327\",\n"
                + "        \"DirectChildrenCount\": 0,\n"
                + "        \"Name\": \"UserStory-2-2Test\",\n"
                + "        \"_type\": \"HierarchicalRequirement\"\n"
                + "    },\n"
                + "    \"_type\": \"Task\"\n"
                + "}");

        String state = jsonObject.getString("State");
        String name = jsonObject.getString("Name");
        String nameNested = jsonObject.getJSONObject("WorkProduct").getString("Name");
        System.out.println("state: " + state);
        System.out.println("name: " + name);
        System.out.println("nameNested: " + nameNested);
    }
}

If you're using maven you can add the library dependency this way:

<dependencies>
     <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20160810</version>
    </dependency>        
</dependencies>
    String JSON_STRING=" {
      "_rallyAPIMajor": "2",
      "_rallyAPIMinor": "0",
      "_ref":              
   "https://rally1.rallydev.com/slm/webservice/v2.0/task/115664163908",
    "_refObjectUUID": "3595aeb8-f99e-4e03-a842-9a2960833c1d",
    "_objectVersion": "3",
    "_refObjectName": "My-Task Akshay...Task created for testing",
    "FormattedID": "TA72018",
    "Name": "My-Task Akshay...Task created for testing",
    "Estimate": 10.0,
    "State": "Defined",
    "WorkProduct": {
        "_rallyAPIMajor": "2",
        "_rallyAPIMinor": "0",
        "_ref": "https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement/115663481788",
        "_refObjectUUID": "f760c23e-5d57-4b6e-bd4c-d6f1d2c26900",
        "_objectVersion": "6",
        "_refObjectName": "UserStory-2-2Test",
        "FormattedID": "US35327",
        "DirectChildrenCount": 0,
        "Name": "UserStory-2-2Test",
        "_type": "HierarchicalRequirement"
    },
    "_type": "Task"
}
         "    

         // JSON Parsing code
         JsonObject jsonobject =new JsonObject(JSON_STRING);
         JsonObject jsonobject1 =jsonobject.getJsonObject("WorkProduct");
         String Name=jsonobject1.getString("Name");

I have got it.

for(JsonElement result : taskresponse.getResults())
        {
            JsonObject results = result.getAsJsonObject();
            System.out.println("Task :"+results.get("Name").getAsString()+
                    "\n State :"+results.get("State").getAsString()+" User Story:"+results.get("WorkProduct").getAsJsonObject().get("Name"));

        }

Using results.get("WorkProduct").getAsJsonObject().get("Name")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM