HarmonyOS鸿蒙Next中实现单框架Gson集成示例代码
HarmonyOS鸿蒙Next中实现单框架Gson集成示例代码
介绍
鸿蒙ets侧想使用map,保存打点上报的数据,但是Map和HashMap都不支持序列化,使用起来不方便。Gson用于对象与JSON字符串之间的互相转换,并支持JsonElement对象类型,功能比系统的HashMap能力会丰富一些,能满足绝大部分JSON数据的处理场景。由于该库未入OHPM仓库,需要手动下载源代码集成。
注:三方库Gson官方已停止维护,建议使用JSON。
效果预览

使用说明
以har包的方式集成到HamronyOS工程:
- 拷贝ohos_gson/ library目录到工程根目录,并修改文件夹名称为gson
- 修改gson/hvigorfile.js内容:
import { harTasks } from '@ohos/hvigor-ohos-plugin';
export default {
system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
plugins:[] /* Custom plugin to extend the functionality of Hvigor. */
}
- 修改工程根目录build-profile.json5文件,添加如下内容:
"modules": [
...
{
"name": "gson",
"srcPath": "./gson"
}
...
]
- 在需要依赖的模块中添加依赖,比如entry模块依赖gson,则在entry/oh-package.json5文件dependencies字段中添加如下内容:
{
...
"dependencies": {
"gson": "file:../gson"
},
...
}
实现思路
JsonObject序列化
let jsonObj: JsonObject = new JsonObject()
jsonObj.addProperty('code', 400)
jsonObj.addProperty('message', '参数错误')
let gsonObj = new Gson().toJson(jsonObj)
this.message = gsonObj.toString()
console.info(`Demo JsonObj序列化: jsonStr:${gsonObj.toString()}`)
反序列化JsonObject
let str = '{"code":400,"message":"参数错误"}'
let jsonObj: JsonObject = parseString(str) as JsonObject
let code = jsonObj.getAsJsonPrimitiveByMemberName('code')
let message = jsonObj.getAsJsonPrimitiveByMemberName('message')
console.info(`Demo ${this.message}`)
JsonArray序列化
let jsonArray = new JsonArray()
let emptyArray = new JsonArray()
let str = '{"code":400,"message":"参数错误"}'
let jsonObj: JsonObject = parseString(str) as JsonObject
// 数组中加入number成员
jsonArray.add(1)
// 数组中加入string成员
jsonArray.add('a')
// 数组中加入数组成员
jsonArray.add(emptyArray)
// 数组中加入jsonObj成员
jsonArray.add(jsonObj)
// 序列化jsonArray并打印
let obj = new Gson().toJson(jsonArray)
console.info(`Demo JsonArray序列化:${obj.toString()}`)
反序列化JsonArray
// 通过str反序列化成JsonArray
let arrayStr = `[1,"a",[],{"code":400,"message":"参数错误"}]`
let jsonArray: JsonArray = parseString(arrayStr) as JsonArray
console.info(`Demo size = ${jsonArray.size()}`)
// 获取JsonArray中的第一个值并打印
let value0 = (jsonArray.get(0) as JsonPrimitive).getAsNumber()
console.info(`Demo value0:${value0}`)
// 获取JsonArray中的第二个值并打印
let value1 = (jsonArray.get(1) as JsonPrimitive).getAsString()
console.info(`Demo value1:${value1}`)
// 获取JsonArray中的第三个值并打印
let value2 = (jsonArray.get(2) as JsonArray)
let obj = new Gson().toJson(value2)
console.info(`Demo value2:${obj.toString()}`)
// 获取JsonArray中的第四个值并打印
let value3 = (jsonArray.get(3) as JsonObject)
let code = value3.getAsJsonPrimitiveByMemberName('code').getAsNumber()
let message = value3.getAsJsonPrimitiveByMemberName('message').getAsString()
console.info(`Demo code:${code} message:${message}`)
更多关于HarmonyOS鸿蒙Next中实现单框架Gson集成示例代码的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中实现单框架Gson集成,可以通过以下步骤完成:
-
添加依赖:首先,在项目的
build.gradle文件中添加Gson库的依赖。dependencies { implementation 'com.google.code.gson:gson:2.8.8' } -
创建数据类:定义一个简单的数据类,用于JSON序列化和反序列化。
public class User { private String name; private int age; // Getters and setters public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } -
序列化与反序列化:使用Gson进行JSON的序列化和反序列化操作。
import com.google.gson.Gson; public class GsonExample { public static void main(String[] args) { // 序列化 User user = new User(); user.setName("John"); user.setAge(30); Gson gson = new Gson(); String json = gson.toJson(user); System.out.println("Serialized JSON: " + json); // 反序列化 String jsonInput = "{\"name\":\"John\",\"age\":30}"; User deserializedUser = gson.fromJson(jsonInput, User.class); System.out.println("Deserialized User: " + deserializedUser.getName() + ", " + deserializedUser.getAge()); } } -
运行测试:在HarmonyOS设备或模拟器上运行代码,确保Gson库正常工作。
通过上述步骤,可以在HarmonyOS鸿蒙Next中实现Gson的集成,并进行JSON数据的序列化和反序列化操作。
更多关于HarmonyOS鸿蒙Next中实现单框架Gson集成示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)Next中,你可以通过以下步骤集成Gson库,并实现JSON的序列化和反序列化:
-
添加Gson依赖: 在
build.gradle文件中添加Gson依赖:dependencies { implementation 'com.google.code.gson:gson:2.8.9' } -
使用Gson进行JSON操作: 以下是一个简单的示例代码,展示了如何使用Gson进行对象的序列化和反序列化:
import com.google.gson.Gson; public class MainAbilitySlice { public void onStart() { // 创建Gson实例 Gson gson = new Gson(); // 对象序列化为JSON字符串 User user = new User("John", 30); String json = gson.toJson(user); System.out.println("Serialized JSON: " + json); // JSON字符串反序列化为对象 User deserializedUser = gson.fromJson(json, User.class); System.out.println("Deserialized User: " + deserializedUser.getName()); } class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } }

