Как получить доступ к данным, которые есть в ключе "text / plain" - PullRequest
1 голос
/ 03 мая 2019

Это json, который я получаю

{
    "id": 21,
    "code": "import scala.collection.JavaConversions._;import java.io.File;def getFileTree(f: File): Stream[File] =f #:: (if (f.isDirectory){ f.listFiles().toStream} else{ Stream.empty});getFileTree(new File(\"/home/datagaps/Downloads/\")).filter(_.getName.endsWith(\".json\")).foreach(println);",
    "state": "available",
    "output": {
        "status": "ok",
        "execution_count": 21,
        "data": {
            "text/plain": "/home/datagaps/Downloads/santanu.json\nimport scala.collection.JavaConversions._\nimport java.io.File\ngetFileTree: (f: java.io.File)Stream[java.io.File]\n"
        }
    },
    "progress": 1
}

Это код, который я написал для доступа к строке.

String output=getGETRequestResponse(uri).getJSONObject("output").getJSONObject("data").getString("text/plain");

org.json.JSONException: JSONObject["output"] is not a JSONObject.
    at org.json.JSONObject.getJSONObject(JSONObject.java:736)
    at com.datagaps.livyservice.service.LivyServerServiceImpl.getFilePaths(LivyServerServiceImpl.java:229)
    at com.datagaps.LivyProject.LivyServiceApplication.main(LivyServiceApplication.java:53)

во время выполнения кода я получаюследующее исключение.

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Вы также можете сделать это:

        String data = "{\n" +
                "    \"id\": 21,\n" +
                "    \"code\": \"import scala.collection.JavaConversions._;import java.io.File;def getFileTree(f: File): Stream[File] =f #:: (if (f.isDirectory){ f.listFiles().toStream} else{ Stream.empty});getFileTree(new File(\\\"/home/datagaps/Downloads/\\\")).filter(_.getName.endsWith(\\\".json\\\")).foreach(println);\",\n" +
                "    \"state\": \"available\",\n" +
                "    \"output\": {\n" +
                "        \"status\": \"ok\",\n" +
                "        \"execution_count\": 21,\n" +
                "        \"data\": {\n" +
                "            \"text/plain\": \"/home/datagaps/Downloads/santanu.json\\nimport scala.collection.JavaConversions._\\nimport java.io.File\\ngetFileTree: (f: java.io.File)Stream[java.io.File]\\n\"\n" +
                "        }\n" +
                "    },\n" +
                "    \"progress\": 1\n" +
                "}";
//Here data is response which tou get from getGETRequestResponse(uri) so we can replace it like : String data = getGETRequestResponse(uri)

        JSONObject jsonRootObject = new JSONObject(data);
        final String value = jsonRootObject.getJSONObject("output").getJSONObject("data").getString("text/plain");
        System.out.println("text/plain value: " + value);
0 голосов
/ 03 мая 2019

Вы можете попробовать что-то вроде этого:

String output=getGETRequestResponse(uri).getJSONObject("output").getJSONObject("data").toString();
ObjectMapper mapper = new ObjectMapper();
Map<String, String> map = mapper.readValue(output, Map.class);
System.out.ptintln(map.get("text/plain"));

Дай мне знать, если получишь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...