Android 无法读取本机JSON数据
我正在尝试使用Android studio构建一个旧项目,但这个过程失败了。我收到的错误消息如下: 错误:无法读取本机JSON数据 使用JsonReader.setLenient(true)在第1行第1列路径接受格式错误的JSON$ 我在“生成”选项卡中得到了更详细的错误消息: 我认为应用程序的build.gradle文件应对错误负责。该文件的代码为:Android 无法读取本机JSON数据,android,json,react-native,gradle,Android,Json,React Native,Gradle,我正在尝试使用Android studio构建一个旧项目,但这个过程失败了。我收到的错误消息如下: 错误:无法读取本机JSON数据 使用JsonReader.setLenient(true)在第1行第1列路径接受格式错误的JSON$ 我在“生成”选项卡中得到了更详细的错误消息: 我认为应用程序的build.gradle文件应对错误负责。该文件的代码为: apply plugin: 'com.android.application' android { compileSdkVersion 25
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.example.despoina.ldtest"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
ndk {
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
}
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
arguments '-DANDROID_PLATFORM=android-13',
'-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
// let gradle pack the shared library into apk
jniLibs.srcDirs += ['../gen-libs/gmp']
jniLibs.srcDirs += ['../distribution/ecc/lib']
jniLibs.srcDirs += ['../distribution/smodbus/lib']
resources.includes = [ 'res/parameters.txt' ]
}
}
externalNativeBuild {
cmake {
path 'src/main/cpp/CMakeLists.txt'
}
}
}dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:25.2.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.1'
// uncomment out this one to generate lib binaries,
// and also uncommented out the one in settings.gradle
// after lib is generated, just comment them out again
//implementation project(':gen-libs')
}
任何帮助都将不胜感激 第1行和第1列中的错误通常意味着JSON不是真正的JSON。可能服务器正在以HTML或其他形式发送JSON,或者格式可读性不好(UTF-8和ASCII受到很好的支持,但其他编码器可能不支持)。尝试将服务器的响应打印为字节[],并查看哪个是第一个字符。解决方案1: 最后,我解决了与json宽松模式无关的问题,即我的POST响应有问题(json数据之前还有其他一些非json输出) 以下是JakeWharton关于如何设置Gson宽大模式的回应: 确保您有:
compile'com.google.code.gson:gson:2.6.1'
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
解决方案2:
当响应内容类型不是application/json
时,也会出现此问题。在我的例子中,响应内容类型是text/html
,我面临这个问题。我把它改成了application/json
,然后它就可以工作了。也许它和:
这是由于Android Studio build configure出现错误,请再次尝试
清理
和重建
您的项目。如果它仍然不起作用,你可以将你的项目复制到一个新文件夹中,然后通过Android Studio重新打开它。我认为将旧项目迁移到当前版本是最好的方法。除非你有充分的理由留下来。原因是,要找到一个适用于Gradle插件、构建工具和Android Studio的旧版本的匹配项确实很困难。即使您以某种方式找到了上述错误的修复方法,也不能保证不会发生进一步的错误,也无法无缝地进行构建
如果您仍然需要现有环境的解决方案,您可以通过共享root build.gradle、gradle包装器属性等获得更多线索,但我认为迁移更好
对于迁移,如果不能解决确切的问题,可能会给您一些想法。我遇到了类似的问题。我必须删除项目的.cxx文件夹才能解决此问题。可能是您的json数据已损坏或结构已更改,请再次检查。检查此项,它与您的问题类似,也与android studio相关——您指的是什么服务器响应?这是一个生成错误。