Извлечение текста из ответа Http - PullRequest
0 голосов
/ 01 мая 2018

ниже скриншот http респон в Java -

screenshot of http response

и ниже текстовая форма ответа:

{
  "LightGingerTheTextResult": [
    {
      "Confidence": 4,
      "From": 0,
      "LrnFrg": null,
      "LrnFrgOrigIndxs": [],
      "Mistakes": [
        {
          "CanAddToDict": false,
          "From": 0,
          "To": 0
        }
      ],
      "ShouldReplace": true,
      "Suggestions": [
        {
          "LrnCatId": 12,
          "Text": "An"
        },
        {
          "LrnCatId": 45,
          "Text": "A"
        }
      ],
      "To": 0,
      "TopLrnCatId": 12,
      "Type": 3,
      "UXFrgFrom": 0,
      "UXFrgTo": 6
    }
  ]
}

Я хочу извлечь «текст» в предложении.

Это моя часть с JSON. Я получаю окончательный ответ в "finalResult" -

JSONObject json = new JSONObject();
        try
        {
            StringBuffer response =urllib.urlopen(url);
            String finalResponse= response.toString();
            System.out.println("final response"+finalResponse);
            StringBuffer result=(StringBuffer) json.get(finalResponse);
            //finalResult=URLEncoder.encode(result.toString(), "UTF-8");
            String finalResult=result.toString();
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

Я бы предложил вам сначала начать с получения тела вашего объекта httpResponse.

 String tmp = response.body();   // I assume the callback method has a an 
                                 //argument of type 
                                 //httpResponse called response

Затем сохраните его где-нибудь, например: string.

Используйте gson и используйте класс httpResponse

вот так: httpResponse rep = gson.fromJson (, httpResponse .class); Таким образом, теперь вы можете использовать объект rep для получения того, что вы хотите.

0 голосов
/ 01 мая 2018

См. stackoverflow.com / questions / 2591098 . Вам нужна библиотека, используя пакет org.json с

new JSONObject(textOfResponse)
.getJSONArray("LightGingerTheTextResult").getJSONObject(0)
.getJSONArray("Suggestions").getJSONObject(0)
.getString("Text")

и ваши textOfResponse я получаю

An
0 голосов
/ 01 мая 2018

Если вы ищете значение определенного узла JSON, вы можете использовать выражение JsonPath , например. чтобы извлечь значения всех Text узлов:

$.LightGingerTheTextResult[*].Suggestions[*].Text

в вашем примере упрощается до

$..Text

или только первый Text узел от первого Suggestions узла:

$.LightGingerTheTextResult[0].Suggestions[0].Text
...