鸿蒙Next开发中如何将JSON序列化为驼峰格式

在鸿蒙Next开发中,如何将JSON数据序列化为驼峰命名格式?目前使用系统自带的JSON库转换后字段名仍然是下划线风格,需要统一转为驼峰格式以便前端使用。有没有推荐的配置方法或第三方库可以实现?求具体代码示例。

2 回复

在鸿蒙Next里,用JsonUtilserialize方法,配合NamingPolicy.LOWER_CAMEL_CASE参数,就能把JSON对象变成驼峰格式。简单说,就是让字段名从user_name变成userName,代码优雅不费劲!

更多关于鸿蒙Next开发中如何将JSON序列化为驼峰格式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)开发中,将JSON序列化为驼峰格式可以通过以下步骤实现:

1. 使用@ohos.util中的JSON序列化工具

鸿蒙Next的ArkTS支持使用JSON.stringify()进行序列化,但默认不直接支持驼峰格式转换。需要先对对象进行键名转换,再序列化。

2. 实现键名转换函数

编写一个递归函数,将对象的键名转换为驼峰格式(例如:user_nameuserName):

function toCamelCase(obj: any): any {
  if (typeof obj !== 'object' || obj === null) {
    return obj; // 基础类型直接返回
  }
  
  if (Array.isArray(obj)) {
    return obj.map(item => toCamelCase(item)); // 数组递归处理
  }
  
  const camelCaseObj: Record<string, any> = {};
  for (const key in obj) {
    if (obj.hasOwnProperty(key)) {
      // 将下划线命名转换为驼峰:user_name -> userName
      const camelKey = key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
      camelCaseObj[camelKey] = toCamelCase(obj[key]); // 递归处理值
    }
  }
  return camelCaseObj;
}

3. 序列化为JSON字符串

使用转换后的对象进行序列化:

const data = {
  user_name: '张三',
  user_age: 25,
  address_info: {
    street_name: '长安街',
    postal_code: '100000'
  }
};

const camelData = toCamelCase(data);
const jsonString = JSON.stringify(camelData);

console.log(jsonString); 
// 输出:{"userName":"张三","userAge":25,"addressInfo":{"streetName":"长安街","postalCode":"100000"}}

注意事项:

  • 此方法适用于嵌套对象和数组。
  • 如果键名已为驼峰格式,函数不会重复转换。
  • 确保输入数据为可序列化对象(避免包含函数、Symbol等)。

通过以上步骤,即可在鸿蒙Next中实现JSON到驼峰格式的序列化。

回到顶部