HarmonyOS 首选项与数据库存储数据的格式

1、用同一份数据分别使用首选项和数据库进行存储,按照我的理解这两个存储方式存储的value为字符串,但是现在从首选项存储后取出来的值是object,从数据库取出的是字符串?是我存储的有问题还是首选项存储的就是这种形式呢?

2、用数据库存储json字符串,查出数据后,转换jsonobject,然后取出key对应的value,现在编译的时候直接报错,首选项一样的方式就可以,该如何修改,部分代码如下:

首选项和数据库存储的json字符串如下:

{
  "project.status.disable": 1,
  "customer.business.disable": 1,
  "schedule.workplan.disable": 0,
  "flow.status.disable": 0,
}

首选项取出上述数据后打印为object类型,我需要取出对应的value,方式为key['schedule.workplan.disable'] 是可以获取对应的value

数据库取出的值为字符串,转换为jsonobject再取值JSONObject.parse(key)['flow.status.disable']该方式取值为undefined

这种方式JSON.stringify(key)['']或者JSON.parse(key)['']直接报错Indexed access is not supported for fields

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

首选项的getAll返回的是Object类型的详情可以参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-preferences-V5#getall-1

json经JSONObject.parse(key)转换并未指定转换类型,按需求可以参考下面写法

let resaa = JSON.parse(jsons) as Record<string, number>
let project_status_disable = resaa['project.status.disable']
//或者
let project_status_disable = (JSON.parse(jsons) as Record<string, number>)['project.status.disable']
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 首选项报错数据报错
31浏览 • 1回复 待解决
HarmonyOS 首选项超长string存储失败
37浏览 • 1回复 待解决
数据库存储地址是什么
1965浏览 • 1回复 待解决
首选项存储问题,为什么会报错?
293浏览 • 1回复 待解决
数据库存word怎么存?
3222浏览 • 1回复 待解决
HarmonyOS 首选项回调失效
19浏览 • 1回复 待解决
HarmonyOS TaskPool使用首选项报错
473浏览 • 1回复 待解决
HarmonyOS 创建首选项报错code:15500000
173浏览 • 1回复 待解决