有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我需要在链接中获取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中出错了。爪哇

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

my seryalize(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(); }

还有穆阿维季曼。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(); } });

我需要帮助修复错误并获取显示文本视图的对象 谢谢你的帮助

Tags:  

共 (4) 个答案

  1. # 1 楼答案

    response.body();可以强制转换到您的POJO类,即Queryip

    您正在将其分配给referenceCall类。这就是问题所在

    尝试:

    Queryip q = (Queryip)response.body()

  2. # 2 楼答案

    问题是您创建了调用对象

    只需创建如下所示的对象

    Queryip queryip
    

    并且在成功中

    queryip=response.body();
    
  3. # 3 楼答案

    只需在activitymain中将全局对象类型从Call更改为Queryip即可。JAVA 然后,作为回应: 您可以访问queryip=response。身体()

  4. # 4 楼答案

    这里是你的代码错误的地方

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

    Call<Queryip> queryip;
    

    现在,在api响应中,您试图用response.body()分配queryip,这就是为什么会出现错误

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

    因此,只需从以下内容重构变量声明:

    Call<Queryip> queryip;
    

    Queryip queryip;
    

    就这样