当应该为真时,Android Studio 改造响应返回布尔值为假

Posted

技术标签:

【中文标题】当应该为真时,Android Studio 改造响应返回布尔值为假【英文标题】:Android Studio Retrofit Response returned boolean as false when is sould be true 【发布时间】:2021-08-09 16:01:23 【问题描述】:

当我使用 Retrofit 从服务器获取对象到我的 android 应用程序时,所有非布尔值都是准确的,并且所有布尔值始终为 false,即使服务器发送它们为 true。 如果之前有人处理过这个问题,如果我能得到一些帮助,我会很高兴。

**我检查了属性为同名 Object boundary

这是来自应用程序调试模式内的服务器的响应 Response from server

这是服务器告诉我他发送到应用程序的内容

2021-05-20 14:30:53.440 调试 12404 --- [nio-8081-exec-2] cloud.logic.services.DeliverymanService : DeliverymanService GetRoute - 返回值:RouteBoundary(routeID=60a4d44aa63e6a30dce20968, deliverymanID=MXBkWizNBCQYUpxLfEdmy2kxAov2 , Deliveries=[609beaf5e8180842a0d1c62d, 609afbc00eb3232001fda466], isApproved=true, isSorted=true)

【问题讨论】:

【参考方案1】:

我猜你的 Route 类中的问题 - 两个布尔字段都没有从服务器响应中填充并使用默认值。

可能Gson 使用getter 和setter 来反序列化值,而您的Route 类的布尔字段命名不一致。

一个名为 isApproved 的字段,但您的 setter 名称是 setApproved。 尝试:

按照命名模式set%FieldName%重命名setter,所以它会变成setIsApproved 将字段而不是 isApproved 重命名为 approved

请看下面的例子:

    public class Route 

        private boolean isApproved;
        private boolean isSorted;
        // OR
        private boolean approved;
        private boolean sorted;

        public Route() 
        

        public Route(boolean isApproved, boolean isSorted) 
            setApproved(isApproved);
            setSorted(isSorted);
            // OR
            setIsApproved(isApproved);
            setIsSorted(isSorted);
        

        public boolean isApproved() 
            return isApproved;
        

        public void setApproved(boolean approved) 
            isApproved = approved;
        
        //OR
        public void setIsApproved(boolean approved) 
            isApproved = approved;
        

        public boolean isSorted() 
            return isSorted;
        

        public void setSorted(boolean sorted) 
            isSorted = sorted;
        
        // OR
        public void setIsSorted(boolean sorted) 
            isSorted = sorted;
        
    

【讨论】:

以上是关于当应该为真时,Android Studio 改造响应返回布尔值为假的主要内容,如果未能解决你的问题,请参考以下文章

当其他可观察对象为真时,从可观察对象中获取项目

当属性和数据值为真时 WPF 触发

当水平为真时,百分比不适用于 FlatList 渲染项

当它应该为真时,异步系列以假响应

Pine 脚本 - 当多个条件为真时输入位置

仅当在 Android 中单击按钮后条件为真时才启动 Activity