陌简曦东 2019-03-04 16:02 采纳率: 0%
浏览 272

接收的泛型内部是javaBean和其它基本数据,javaBean内类无法接收到

接收泛型类型为自定义Response
图片说明

自定义的Respone

图片说明

Response中的泛型类

图片说明

接收数据成功

图片说明

输出接收到的数据,Response中的泛型接收到了,两个字段数据输出为0,但是UserModel类接收到是null

图片说明

数据格式都对,也有数据请求下来,请问大牛什么原因,如果写成TypeToken()数据也正常,只能收到一个泛型

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-11 19:23
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Android中,如果你想要将Java Bean对象转换为特定类型的Response对象,你可以使用fromJson()方法。这个方法可以接受一个字符串参数作为JSON字符串,并且会自动根据传入的JSON字符串生成对应的Java Bean对象。

    你的问题中涉及到如何处理泛型类型的问题。在Java中,泛型是一个特殊的类型参数,它允许你传递任意类型的对象给方法或构造函数。当你尝试将泛型对象传递给泛型方法时,你需要提供一个与目标类型相同的泛型参数。

    例如:

    public class User {
        private String name;
        private int age;
    
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        // getters and setters
    }
    
    // Example usage:
    Response<User> response = new Gson().fromJson(jsonString, Response.class);
    

    在这个例子中,我们创建了一个名为User的Java Bean类,并提供了它的属性(name和age)。然后,我们在响应对象上添加了这些属性。当我们调用fromJson()方法并提供jsonString作为参数时,Gson库会自动解析jsonString并将它转化为一个新的用户对象。

    至于为什么你在接收数据时只收到了泛型的Response对象而没有实际的数据,这可能是由于以下原因:

    1. 在发送HTTP请求时,服务器可能没有正确地返回包含数据的响应。
    2. 当服务器返回的响应不是预期的类型时,Gson可能会抛出异常,导致解析失败。

    为了避免这种情况,你可以考虑使用HttpURLConnection或其他网络库来直接获取响应实体。这样可以在接收响应后立即解码它,从而避免解析错误。此外,确保服务器返回的数据符合你的需求也很重要。

    评论

报告相同问题?