Error when parsing JSON using GSON

You need to parse the JSON in android, using GSON, into the Map object. JSON comes from Yandex. Translate. I tried to use the following:

Gson gson = new GsonBuilder().create();

try {
        Response<Object> response = call.execute();
        JsonReader reader = new JsonReader(new StringReader(response.body().toString()));
        reader.setLenient(true);
        Map<String, String> map = gson.fromJson(reader, Map.class);

        for (Map.Entry pair: map.entrySet()) {
            if (pair.getKey().equals("text")) {
                translatedText = pair.getValue().toString();
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

This works well when trying to translate a single word. But when translating several words, an error occurs:

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated array at line 1 column 40 path $.[1]
    at com.google.gson.Gson.fromJson(Gson.java:947)
    at translater.Adapter.translate(Adapter.java:53)
    at translater.MainActivity$1.onClick(MainActivity.java:34)
    at android.view.View.performClick(View.java:5637)
    at android.view.View$PerformClick.run(View.java:22433)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6121)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

How do I fix this ?

Sample JSON:

{
    "code": 200,
    "lang": "en-ru",
    "text": [
        "Здравствуй, Мир!"
    ]
}

1 answers

import com.google.gson.Gson;
import java.util.Arrays;

public class Model {

    private Integer code;

    private String[] text;

    private String lang;

    public static void main(String[] args) {

        Gson gson = new Gson();

        String json = "{\n"
                + "    \"code\": 200,\n"
                + "    \"lang\": \"en-ru\",\n"
                + "    \"text\": [\n"
                + "        \"Здравствуй, Мир!\"\n"
                + "    ]\n"
                + "}";

        Model fromJson = gson.fromJson(json, Model.class);

        System.out.println(fromJson);
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String[] getText() {
        return text;
    }

    public void setText(String[] text) {
        this.text = text;
    }

    public String getLang() {
        return lang;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }

    @Override
    public String toString() {
        return "Model [code = " + code + ", text = " + Arrays.toString(text) + ", lang = " + lang + "]";
    }
}
 1
Author: Дмитрий, 2019-12-28 22:55:38