Android 无法读取本机JSON数据

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

我正在尝试使用Android studio构建一个旧项目,但这个过程失败了。我收到的错误消息如下:

错误:无法读取本机JSON数据 使用JsonReader.setLenient(true)在第1行第1列路径接受格式错误的JSON$

我在“生成”选项卡中得到了更详细的错误消息:

我认为应用程序的build.gradle文件应对错误负责。该文件的代码为:

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相关——您指的是什么服务器响应?这是一个生成错误。