android 用json格式同步数据库数据时遇到null值如何传递

本文探讨了在将数据库中用户数据同步至服务器并处理空字段时的策略,包括使用默认值和业务逻辑区分的方法,以避免数据结构改变和确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天有一个需求是:

用json格式同步数据库中用户的数据到服务器。然后用户重新安装程序时,更新用户的数据。


在调试时遇到一个问题,数据库的表中有的字段数值是空的。而

JSONObject对象赋值时,是不允许传空值进去的。

传了空值会抛出异常。

    String checkName(String name) throws JSONException {
        if (name == null) {
            throw new JSONException("Names must be non-null");
        }
        return name;
    }

取值时如果没有对应的值也会抛出异常。

    public Object get(String name) throws JSONException {
        Object result = nameValuePairs.get(name);
        if (result == null) {
            throw new JSONException("No value for " + name);
        }
        return result;
    }

有没有什么好办法解决这个问题呢?


方法1:

用默认值。

如果数据库的表中字段为空,则用默认值代替。如“null” 字符串;

这样的好处是,存,取的逻辑可以 共用和其它数据一样的 api。

坏处是:

破坏了原来的数据结构。

数据库中空值和 “ ” 是不一样的,和“null” 更是不一样的。

可能会造成其它一些问题。


方法2:

用默认值 + 业务逻辑进行区分。

字段为空的条目,肯定和其它条目有不一样的 业务逻辑。


保存到服务端:用默认值传输到服务端。

从服务端获取后插入本地数据库:用业务逻辑区分后,操作非空数据。

这样的好处是不会改变数据库的数据结构。

也可以复用之前业务逻辑的api。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值