首页 > 解决方案 > 无法读取原生 JSON 数据

问题描述

我正在尝试使用 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')
}

任何帮助将不胜感激!!

标签: androidjsonreact-nativegradle

解决方案


解决方案1:

最后我解决了与 json 宽松模式无关的问题,我的 POST 响应有问题(在 json 数据之前还有一些其他非 json 输出)。

以下是 JakeWharton 关于如何设置 Gson 宽松模式的回复:

确保你有:<code>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然后它将起作用。


推荐阅读