如何在Kotlin数据类中使用带空格的变量



上下文:我正在将x值、y值和z值从Arduino加速计传感器传递到Firebase实时数据库。Arduino将值传递到实时数据库的方式如下所示(X轴、Y轴、Z轴)。我无法更改它将变量名传递给Firebase的方式。我希望它像x_axisy_axis等等

***FIREBASE REALTIME DATABASE
"data": {
"data1": {
"X Axis": 0.78,
"Y Axis": 0.91,
"Z Axis": 0.07
},
"data2": {
"X Axis": 0.23,
"Y Axis": 0.21,
"Z Axis": 0.43
}
}

我的Kotlin数据类如下所示(使用backtick定义变量,并在文件顶部抑制标识符+关闭IDE中的标识符linting设置):

@file:Suppress("IllegalIdentifier")
package com.example.projectxyz.model.user_list
data class DataMeasured(
val `X Axis`: Double = 0.00,
val `Y Axis`: Double = 0.00,
val `Z Axis`: Double = 0.00,
)

这是我在尝试构建应用程序时遇到的错误:

> Task :app:dexBuilderDebug FAILED
AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.XI0: Space characters in SimpleName 'X Axis' are not allowed prior to DEX version 040","sources":[{"file":"C:\01PrasanthCodes\ProjectsPras\1AndroidDevelopment\Harinivas\app\build\tmp\kotlin-classes\debug\com\example\projectxyz\model\user_list\DataMeasured.class"}],"tool":"D8"}
AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.XI0: Space characters in SimpleName 'X Axis' are not allowed prior to DEX version 040","sources":[{"file":"C:\01PrasanthCodes\ProjectsPras\1AndroidDevelopment\Harinivas\app\build\tmp\kotlin-classes\debug\com\example\projectxyz\model\user_list\DataMeasured.class"}],"tool":"D8"}

有什么办法让我克服这个问题吗?非常感谢

您可以这样定义您的数据类,以从firebase获取数据,并根据需要命名变量:

data class DataMeasured (
@PropertyName("X Axis") val x_axis: Double = 0.00,
@PropertyName("Y Axis") val y_axis: Double = 0.00,
@PropertyName("Z Axis") val z_axis`: Double = 0.00
)

如果序列化有问题,可能是因为IDE生成的getter和setter,请尝试使用@get和@set注释来增强它们:

data class DataMeasured (
@set:PropertyName("X Axis") 
@get:PropertyName("X Axis")
var x_axis: Double = 0.00,
@set:PropertyName("Y Axis") 
@get:PropertyName("Y Axis")
var y_axis: Double = 0.00,
@set:PropertyName("Z Axis") 
@get:PropertyName("Z Axis")
var z_axis`: Double = 0.00
)

最新更新