Android 如何解析response.body okhttp
我在通过okhttp响应解析字符串结果时遇到问题,我想解析这个字符串,但我不知道怎么做。 有人能帮我吗 我正在使用android studioAndroid 如何解析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
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要在将来看不到此卡弹出窗口,请在\nconfiguration.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);
}
});
}
}
});
}
}