Android 如何解析response.body okhttp

Android 如何解析response.body okhttp,android,rest,okhttp,Android,Rest,Okhttp,我在通过okhttp响应解析字符串结果时遇到问题,我想解析这个字符串,但我不知道怎么做。 有人能帮我吗 我正在使用android studio public class MainActivity extends AppCompatActivity {       private TextView mTextViewResult;       @Override     protected void onCreate(Bundle savedInstanceState) {         sup

我在通过okhttp响应解析字符串结果时遇到问题,我想解析这个字符串,但我不知道怎么做。 有人能帮我吗

我正在使用android studio

public class MainActivity extends AppCompatActivity {
 
    private TextView mTextViewResult;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mTextViewResult = findViewById(R.id.text_view_result);
 
        OkHttpClient client = new OkHttpClient();
 
        String url = "https://reqres.in/api/users?page=2";
 
        Request request = new Request.Builder()
                .url(url)
                .build();
 
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }
 
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {
                    final String myResponse = response.body().string();
 
                    MainActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mTextViewResult.setText(myResponse);
                        }
                    });
                }
            }
        });
    }
}
大宗报价 [{“attributes”:{“message”:“这里有一些要开始的资源:\n\n-\n-\n-\n-\n\n要在将来看不到此卡弹出窗口,请在\n
configuration.yaml
中编辑您的配置,并禁用
简介
组件。”,“title:“欢迎回家!”,“上下文”:{“id:”840E4EC20724CFA7D53550796DC35D,“父id”:null,“用户id”:null},“实体id”:“持续通知.通知”,“最后更改”:“2019-04-11T22:44:04.942593+00:00”,“最后更新”:“2019-04-11T22:44:04.942593+00:00”,“状态”:“通知”},{“属性”:{“方位角”:282.29,“仰角”:37.79,“友好的名称”:“太阳”,“下一个黎明”:“2019-04-15T05:35:52+00”,“下一个黄昏”:2019-04-14T18:24:46+00:00,“下一个午夜”:“2019-04-15T00:00:05+00:00”,“下一个中午”:“2019-04-15T12:00:13+00:00”,“下一个起床”:“2019-04-15T05:56:50+00:00”,“下一个设置”:“2019-04-14T18:03:50+00:00”;“上下文”:{“id”:“a8908c263c854345a518358553319876”,“父id”:null,“用户id”:null;“实体id”;“上一次更改的太阳”:2019-04-14T05:57:06.013733+00:00,“最近更新”:“2019-04-14T15:26:30.009359+00:00”,“状态”:“地平线以上”},{“属性”:{“属性”:{“属性”:“气象局的天气预报,由挪威气象研究所发布。”,“实体图片”:”https://api.met.no/weatherapi/weathericon/1.1/?symbol=10;内容类型=图像/png,“友好的名称”:yr Symbol“},“上下文”:{“id”:“e2d38361a1704e2a97a78dca780e2e20”,“父级id”:null,“用户id”:null},“实体id”:“传感器。yr Symbol”,“上次更改”:“2019-04-14T14:31:00.098478+00:00”,“上次更新”:“2019-04-14T14:31:00.098478+00:00”,“状态”:“10”,{“属性”:“友好名称”:“potenza massima stufa”,“上次更新”:“上下文”}“:{id:“708BFDDDA494F07A11506B5E69E3ADD”,“父级id:”null,“用户id:”null},“实体id:”script.1547400071844,“上次更改”:“2019-04-11T22:44:27.871225+00:00”,“上次更新”:“2019-04-11T22:44:27.871225+00:00”,“状态”:”off“},{”属性“{”友好名称“:”potenza minima stufa“,”上次触发“:”null“,”上下文:{“9721b6341250436e8050556e44015ebd”,“父id”:null,“用户id”:null},“实体id”:“script.1547305398108”,“last_changed”:“2019-04-11T22:44:27.872132+00:00”,“last_updated”:“2019-04-11T22:44:27.872132+00:00”,“state:”off“},{”attributes:{”设备类“:”连通性“,”友好的名称“:”远程用户界面“}”,上下文“{”id:”4429627581ef481785396af892bb92cc,“父项id”:null,“用户id”:null},“实体id”:“二进制传感器.远程用户界面”,“上次更改”:“2019-04-11T22:44:27.901163+00:00”,“上次更新”:“2019-04-11T22:44:27.901163+00:00”,“状态”:“不可用”},“属性”:“{”访问令牌“:“6304D62F4B92101BD83EEA793C1263BC72E4796B8F5B8C6”实体图片“/api/camera\u proxy/camera.front\u window?token=630D62742F4B9792101BDB83EE7A7953BC7276E42E6B4F5C6B8A579253”,“友好的\u名称“:“front window”,“supported\u features”:0},“context”:{“id”:“53DDDA3891F24B88ECEDF43D27186A”,“父级\u id”:null,“用户id”:null},“实体id:“camera.front\u window”,“上次更改”:2019-04-11T22:44:27.911773+00:00,“上次更新”:“2019-04-14T15:22:32.548799+00:00”,“状态”:“空闲”},{“属性”:{“自动”:true,“实体id”:[“脚本.1547400071844”,“脚本.1547305398108”],“友好名称”:“所有脚本”,“隐藏”:true,“顺序”:0},“上下文”:{“id”:“D0230CCFD4407FAB7E784B39FA3B”,“父级id”:null,“用户id”:null},“实体id”:“组。所有脚本”,“上次更改”:“2019-04-11T22:44:27.914874+00:00”,“上次更新”:“2019-04-11T22:44:27.914874+00:00”,“状态”:“关闭”},{“属性”:{“命令编码”:“Base64”,“设备代码”:1000,“友好的名称”:“电视萨拉达普拉佐”,“制造商”:“三星”,“受支持的控制器”:“Broadlink”,“受支持的功能”“:3512,“支持的模型”:[“UE40F6500”]},“上下文”:{“id”:“a6dd1bd45e6e48338fd5d22246a27b48”,“父id”:null,“用户id”:null},“实体id”:“媒体播放器.tvsalotto”,“上次更改”:“2019-04-11T22:44:27.995463+00:00”,“上次更新”:“2019-04-11T22:44:27.995463+00:00”,“状态”:“关闭”{“属性”:”“Riscaldamento al massimo”,“图标”:“mdi:散热器”},“上下文”:{“id”:“6c12c666d4df4b26a08ec20ea6769489”,“父id”:null,“用户id”:null},“实体id”:“输入布尔值。Riscaldamento massimo”,“上次更改”:“2019-04-11T22:44:27.996785+00:00”,“上次更新”:“2019-04-11T22:44:27.996785+00:00”,“状态”:“关闭”{“属性名称”{“:”Porta Studio“,”icon“:”mdi:door“,”context“:{”id“:”4ce7d589575b419b84f6b8b7a2cd1d8“,”parent_id“:”null“,”entity_id“:”input_boolean.Porta_Studio“,”last_changed“:”2019-04-11T22:44:44:27.998025+00:00”,“上次更新“:”2019-04-11T22:44:27.998025+00:00”,“state“:”off“,”属性“,{”属性“,”Porta Studio”,“icon”:“mdi:door”},“context”:{“id”:“946c2c4bf6774a75b387738670cc23”,“parent_id”:null,“user_id”:null},“entity_id”:“input_boolean.porta_ingreso”,“last_changed”:“2019-04-11T22:44:27.999169+00:00”,“last_updated”:“2019-04-11T22:44:27.999169+00:00”,“state”:“off”,{“attributes”:“友好的名字”:“Movimento Salotto9”,“icon”mdi:security account“}”,context:{“id”:“4923466b5c9a4d0e8e9e9143f42a926a”,“parent_id”:null,“user_id”:null},“entity_id”:“input_boolean.movimento_salotto9”,“last_changed”:“2019-04-11T22:44:28.000306+00:00”,“上次更新”:“2019-04-11T22:44:28.000306+00:00”,“state”:“off”;“off”;“off”;{“attributes”:“友好的名字”movimento:“图标”salotto“:{”mdi:security account“}”,context:{“id”:“8314408ca4154fbcb717cd931fd81a44”,“parent_id”:null,“user_id”:null},“entity_id:“input_boolean.movimento_salotto2”,“last_changed:“2019-04-11T22:44:28.001453+00:00”,“last_updated:“2019-04-11T22:44:28.001453+00:00”,“state:”off“,{“attributes:”
{
    "page": 2,
    "per_page": 3,
    "total": 12,
    "total_pages": 4,
    "data": [
        {
            "id": 4,
            "first_name": "Eve",
            "last_name": "Holt",
            "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg"
        },
        {
            "id": 5,
            "first_name": "Charles",
            "last_name": "Morris",
            "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/stephenmoon/128.jpg"
        },
        {
            "id": 6,
            "first_name": "Tracey",
            "last_name": "Ramos",
            "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg"
        }
    ]
}
    public class ResponseResult {

    private int page;
    private int per_page;
    private int total;
    private int total_pages;
    private List<DataBean> data;

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getPer_page() {
        return per_page;
    }

    public void setPer_page(int per_page) {
        this.per_page = per_page;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getTotal_pages() {
        return total_pages;
    }

    public void setTotal_pages(int total_pages) {
        this.total_pages = total_pages;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        private int id;
        private String first_name;
        private String last_name;
        private String avatar;

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getFirst_name() {
            return first_name;
        }

        public void setFirst_name(String first_name) {
            this.first_name = first_name;
        }

        public String getLast_name() {
            return last_name;
        }

        public void setLast_name(String last_name) {
            this.last_name = last_name;
        }

        public String getAvatar() {
            return avatar;
        }

        public void setAvatar(String avatar) {
            this.avatar = avatar;
        }
    }
}
Gson gson = new Gson();
ResponseResult responseResult=gson.fromJson(response.body().string(), ResponseResult.class);
{
  "tag": "tg1",
  "version": "vr1"
}
data class TermsResponse(val tag: String, val version: String)
@GET("/v1/myapi/terms")
Observable<Response<TermsResponse>> getTerms();
    myApi.getTerms()
            .subscribeOn(Schedulers.io())
            .observeOn(Schedulers.computation())
            .subscribe(
                    { result -> showResult(result.body() as TermsResponse) },
                    { error -> showError(error.message) }
            )
public class MainActivity extends AppCompatActivity {   
    private TextView mTextViewResult;    
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mTextViewResult = findViewById(R.id.text_view_result);
 
        OkHttpClient client = new OkHttpClient();
 
        String url = "https://reqres.in/api/users?page=2";
 
        Request request = new Request.Builder()
                .url(url)
                .build();
 
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }
 
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {
                    final String myResponse = response.body().string();
 
                    MainActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mTextViewResult.setText(myResponse);
                        }
                    });
                }
            }
        });
    }
}