【问题标题】:Volley and GSON deserializeVolley 和 GSON 反序列化
【发布时间】:2019-01-05 23:41:09
【问题描述】:

我遇到了一个奇怪的问题,我不知道为什么。我正在尝试将 json 数据从 http 请求转换为对象。这是我到目前为止所做的。

班级:

public class VersionInfo {
    @SerializedName("build")
    private String build;

    public VersionInfo(String v){
        this.build = v;
    }
}

截击请求:

private void getServerInfo() {
        RequestQueue queue = Volley.newRequestQueue(this);
        String url = "xxxxxx";

        StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        VersionInfo vi = gson.fromJson(response,VersionInfo.class);
                        versionInfo.setText("vi is not working as an object");

                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                versionInfo.setText(error.getMessage());
            }
        });

        queue.add(stringRequest);
    }

请求是这样的 php 脚本:

 <?php
    $obj = array(
        'build' => 'Version: 1.0.0 alpha build'
    );

    $json = json_encode($obj);
    echo $json;
 ?>

这就是调试显示给我的:

我的问题是:为什么这个反序列化不会用给定的文本填充vi 对象?

【问题讨论】:

    标签: android gson android-volley


    【解决方案1】:

    根据您的screenshot 中的response 字符串,您的VersionInfo 应该是

     public class VersionInfo {
    
    @SerializedName("vr")
    @Expose
    private String vr;
    
    public String getVr() {
    return vr;
    }
    
    public void setVr(String vr) {
    this.vr = vr;
    }
    
    }
    

    【讨论】:

    • 谢谢,不知道@Expose。无论如何它仍然无法正常工作
    • 嗯,在某些包中有一个名为 VersionInfo 的类,我正在导入这个而不是我的......
    • 是的,正如我所说,我使用了错误的 calss,就是这样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多