问题描述
使用 Androidx Java、Gradle 和 Firebase 开发 Android 应用。
请帮我找出为什么@JsonProperty 不起作用。
Gradle 已经成功设置了fasterxml 库。
没有编译时错误或运行时错误。
FasterXML 库也已安装并存在。
但是@JsonProperty 和@Jsonignore 不起作用。
因此,不是使用在@JsonProperty 中声明的名称存储数据,
数据以变量名存储到 firebase 中。
并且@JsonIgnore 不会忽略变量,
并且它们也存储在 Firebase 中。
下面是build.gradle,请帮我找出根本原因。
apply plugin: 'com.android.application'
apply from: "$project.rootDir/tools/checkstyle.gradle"
apply from: "$project.rootDir/tools/pmd.gradle"
repositories {
google()
mavenCentral()
maven {
url "https://repo.spring.io/libs-milestone/"
}
maven {
url "https://repository.mulesoft.org/nexus/content/repositories/public/"
}
}
android {
lintOptions {
abortOnError false
}
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'
resolutionStrategy.force 'com.fasterxml.jackson.core:jackson-databind:2.2.2'
resolutionStrategy.force 'com.fasterxml.jackson.core:jackson-core:2.2.2'
resolutionStrategy.force 'com.fasterxml.jackson.core:jackson-annotations:2.2.2'
}
signingConfigs {
config {
keyAlias '*****'
keyPassword '*****'
storeFile file('*****')
storePassword '*****'
}
}
flavorDimensions "default"
compileSdkVersion 30
defaultConfig {
applicationId "*****"
minSdkVersion 21
targetSdkVersion 30
versionCode 17
versionName "Basilisk-prd"
signingConfig signingConfigs.config
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
debug {
debuggable true
testCoverageEnabled = true
}
}
productFlavors {
staging {
applicationIdSuffix ""
versionNameSuffix "-stg"
}
production {
applicationIdSuffix ""
versionNameSuffix "-prd"
}
}
packagingOptions {
exclude 'meta-inf/LICENSE'
exclude 'meta-inf/LICENSE-FIREBASE.txt'
exclude 'meta-inf/LICENSE.txt'
exclude 'meta-inf/NOTICE'
exclude 'meta-inf/NOTICE.txt'
exclude 'meta-inf/androidx.*'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
testOptions {
unitTests.returnDefaultValues = true
}
buildToolsversion '30.0.1'
}
dependencies {
implementation filetree(dir: 'libs',include: ['*.jar'])
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:1.10.19'
androidTestImplementation 'androidx.annotation:annotation:1.0.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0'
androidTestImplementation('androidx.test.espresso:espresso-contrib:3.1.0') {
exclude group: 'com.android.support',module: 'appcompat'
exclude group: 'com.android.support',module: 'support-v4'
exclude module: 'recyclerview-v7'
}
androidTestImplementation 'androidx.test.espresso:espresso-idling-resource:3.1.0'
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
implementation('commons-lang:commons-lang:2.6') {
exclude group: 'commons-io',module: 'commons-io'
}
//Butterknife
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
//Dagger2
implementation 'com.google.dagger:dagger:2.15'
implementation 'com.google.dagger:dagger-android:2.15'
implementation 'com.google.dagger:dagger-android-support:2.15'
annotationProcessor 'com.google.dagger:dagger-compiler:2.15'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.15'
// Architecture
implementation 'androidx.lifecycle:lifecycle-runtime:2.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.0.0'
// RX Java
implementation 'io.reactivex.rxjava2:rxjava:2.1.5'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.2.2'
implementation 'com.fasterxml.jackson.core:jackson-core:2.2.2'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.2.2'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-joda:2.2.2'
implementation platform('com.google.firebase:firebase-bom:26.1.0')
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-database'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'commons-io:commons-io:2.4'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'me.dm7.barcodescanner:zxing:1.8.4'
implementation 'com.journeyapps:zxing-android-embedded:3.5.0'
implementation 'com.journeyapps:zxing-android-embedded:3.3.0@aar'
implementation 'com.google.zxing:core:3.2.1'
implementation 'com.github.bumptech.glide:glide:4.2.0'
// (AH) for HTTP requests
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
}
apply plugin: 'com.google.gms.google-services'
解决方法
最新的 Firebase 数据库不再使用来自 fastxml jackson 注释的 @JsonProperty @JsonIgnore。
改为使用@PropertyName @Exclude @IgnoreExtraProperties 来自包 com.google.firebase.database