繁体   English   中英

改造-如何从json对象获取响应

[英]retrofit - how to get response from json object

我需要在链接中获取json对象

http://link/json

和我的json评论

{"as":"AS48159 Telecommunication Infrastructure Company","city":"Ahvāz","country":"Iran","countryCode":"IR","isp":"Information Technology Company (ITC)","lat":31.3167,"lon":48.6844,"org":"khouzestan Telecommunication co","query":"2.185.10.22","region":"","regionName":"Khuzestan","status":"success","timezone":"Asia/Tehran","zip":""}

但我在activitymain.java中遇到错误

 Incompatible types. Required: retrofit2.Call <ir.hmotamed.myipnet.Queryip> Found: ir.hmotamed.myipnet.Queryip 

我的建议(Queryip.java)

 public class Queryip { @SerializedName("status") private String status; @SerializedName("query") private String query; @SerializedName("country") private String country; @SerializedName("countryCode") private String countryCode; @SerializedName("city") private String city; @SerializedName("timezone") private String timezone; @SerializedName("isp") private String isp; 

我的界面(ApiService.java)

 import retrofit2.Call; import retrofit2.http.GET; public interface ApiService { @GET("json") Call<Queryip> getQueryip(); } 

和mu activitymain.java其

 public class ActivityMain extends AppCompatActivity { Call<Queryip> queryip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ApiService service=ApiClient.getClient().create(ApiService.class); Call<Queryip> call=service.getQueryip(); call.enqueue(new Callback<Queryip>() { @Override public void onResponse(Call<Queryip> Call, Response<Queryip> response) { queryip=response.body(); // this line show error Toast.makeText(ActivityMain.this, "ok", Toast.LENGTH_SHORT).show(); } @Override public void onFailure(Call<Queryip> Call, Throwable t) { Toast.makeText(ActivityMain.this, "error", Toast.LENGTH_SHORT).show(); } }); 

我需要修复错误的帮助,并获取显示文本查看坦克的对象以为您提供帮助!

response.body(); 可以Queryip为您的POJO类,即Queryip

您正在将其分配给引用呼叫类别。 这就是这里的问题

尝试:

Queryip q = (Queryip)response.body()

问题是您创建了Call对象

只需如下创建对象

Queryip queryip

并在onSuccess

queryip=response.body();

这是您的摘要错误的地方。

您的全局声明变量queryip的类型为Call<Queryip>

Call<Queryip> queryip;

现在,在api响应中,您尝试分配带有response.body() queryip ,这就是为什么会出错。

response.body()将返回Queryip类型的对象,但您的变量的类型为Call<Queryip>

因此,只需从以下位置重构变量声明即可:

Call<Queryip> queryip;

Queryip queryip;

而已。

只需在activitymain.java中将全局对象类型从Call更改为Queryip,然后在onResponse中进行更改即可:您可以访问queryip = response.body();。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM