首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从json对象获得响应

如何从json对象获得响应
EN

Stack Overflow用户
提问于 2018-11-05 07:30:47
回答 4查看 898关注 0票数 0

我需要在链接中找到json对象

代码语言:javascript
复制
http://link/json

和我的json评论

代码语言:javascript
复制
{"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中的错误

代码语言:javascript
复制
Incompatible types.
Required:
retrofit2.Call
<ir.hmotamed.myipnet.Queryip>
Found:
ir.hmotamed.myipnet.Queryip

我的服务器化( Queryip.java )

代码语言:javascript
复制
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 )

代码语言:javascript
复制
import retrofit2.Call;
import retrofit2.http.GET;

public interface ApiService {

    @GET("json")
    Call<Queryip> getQueryip();
}

和mu activitymain.java its

代码语言:javascript
复制
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();
            }
        });

我需要帮助修复错误和获取对象显示文本视图坦克为您的帮助!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-11-05 07:35:36

可以将response.body();转换为POJO类,即Queryip

您将它分配给引用调用类。这就是问题所在

试着:

Queryip q = (Queryip)response.body()

票数 1
EN

Stack Overflow用户

发布于 2018-11-05 07:50:25

问题是创建Call对象

只需如下所示创建对象

代码语言:javascript
复制
Queryip queryip

在onSuccess中

代码语言:javascript
复制
queryip=response.body();
票数 0
EN

Stack Overflow用户

发布于 2018-11-05 08:00:56

这是你的片段错的地方。

您的全局声明变量queryipCall<Queryip>类型。

代码语言:javascript
复制
Call<Queryip> queryip;

现在,在api中,您正在尝试用queryip分配response.body(),这就是您得到错误的原因。

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

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

代码语言:javascript
复制
Call<Queryip> queryip;

代码语言:javascript
复制
Queryip queryip;

就是这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53150054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档