HarmonyOS JSON数据解析问题

HarmonyOS
2024-12-27 14:44:29
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zxjiu

用JSON.stringify缓存了一个对象,等我取出来用的时候,用JSON.parse解析得到是字符串,不是原来的数据结构对象。这个是什么原因导致的?

解决方案

应该是用JSON.stringify多转了一层,可以用JSON.parse再解析一层试试,可以参考以下demo:

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(()=>{
            let str = "{\"name\":\"xxxx\",\"age\":\"18\",\"demo\":{\"a\":10,\"b\":20}}";
            let str1 = JSON.stringify(str)
            let obj: ESObject = JSON.parse(JSON.parse(str1))
            console.log('获取对象demo属性结果:' + obj['demo']['a'])
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

根据提供的PreferencesUtil代码可以看到其中的setValue方法内部对您保存的值value也进行了一次JSON.stringify(value)处理,导致需要两次JSON.parse才能将对象解析出来。PreferencesUtil对应代码块如下:

 /**
   * 保存的数据
   * @param key  保存的字段名称
   * @param value
   */
  public setValue<T>(key: string, value: T) {
    let localPreferences: Promise<preferences.Preferences>
      = GlobalContext.getContext().getObject(GlobalContext.LOCAL_PREFERENCES) as Promise<preferences.Preferences>;
    localPreferences.then(async (pref: preferences.Preferences) => {

//这里也进行了一次JSON.stringify(value)处理
      await pref.put(key, JSON.stringify(value));
      pref.flush();
    }).catch((error: BusinessError) => {
      Logger.error(TAG, JSON.stringify(error))
    });
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
分享
微博
QQ
微信
回复
2024-12-27 17:03:35
相关问题
HarmonyOS 关于json解析问题
345浏览 • 1回复 待解决
HarmonyOS json解析问题
852浏览 • 1回复 待解决
如何对JSON数据进行解析优化
1192浏览 • 1回复 待解决
HarmonyOS json 解析
423浏览 • 1回复 待解决
嵌套JSON字符串解析问题
2419浏览 • 1回复 待解决
json解析对象后获取数据返回undefined。
1316浏览 • 1回复 待解决
HarmonyOS json解析异常
889浏览 • 1回复 待解决
HarmonyOS 服务端JSON字符串解析问题
897浏览 • 1回复 待解决
关于鸿蒙arkts解析json字符串问题
704浏览 • 1回复 待解决
HarmonyOS json解析特殊字符
350浏览 • 1回复 待解决
HarmonyOS使用json解析报错
1985浏览 • 2回复 待解决
HarmonyOS JSON解析number丢失精度
828浏览 • 1回复 待解决
HarmonyOS 数据解析
492浏览 • 1回复 待解决
HarmonyOS JSON解析实体方法无法调用
488浏览 • 1回复 待解决
HarmonyOS 超长JSON字符串解析
676浏览 • 2回复 待解决
HarmonyOS 怎么解析本地文件json内容?
467浏览 • 1回复 待解决
HarmonyOS http请求的JSON数据定义问题
700浏览 • 1回复 待解决
HarmonyOS json数据和对象互转时问题
401浏览 • 2回复 待解决