无法读取本机JSON数据

时间:2018-07-16 14:17:36

标签: android gradle

我正在尝试使用Android Studio构建一个旧项目,但是该过程失败。我收到的错误消息是这样的:

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

接受格式错误的JSON

在“构建”标签中,我得到了更详细的错误消息:enter image description here

我认为该应用程序的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')
}

任何帮助将不胜感激!

6 个答案:

答案 0 :(得分:2)

解决方案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,然后它将正常工作。

答案 1 :(得分:0)

我有同样的问题,它与您的.json文件类似。您可以搜索(通过Ctrl + Alt + N)json文件并删除<<<<<main

答案 2 :(得分:0)

第1行和第1列中的错误通常表示JSON不是真正的JSON。也许服务器正在以HTML或其他方式发送JSON,或者格式可读性不佳(很好地支持UTF-8和ASCII,但其他编码器可能不支持)。尝试将Server的响应打印为byte [],然后看看哪个是第一个字符。

答案 3 :(得分:0)

也许与以下内容相同:Can't build project, Gradle output tells Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $

这是由于Android Studio构建配置错误而引起的,请尝试再次cleanrebuild您的项目。如果仍然无法运行,则可以将项目复制到新文件夹,然后通过Android Studio重新打开它。

答案 4 :(得分:0)

我认为将旧项目迁移到当前版本是Android Studio,Gradle插件,Gradle构建的工具版本是最好的方法。除非您有充分的理由坚持。原因是,要匹配适用于旧版本Gradle插件,构建工具和Android Studio的匹配真的很困难。即使您以某种方式找到了所提到的错误的修补程序,也无法保证不会再发生任何错误并无缝地进行构建。

如果您仍想为现有环境提供解决方案,则可以通过共享root build.gradle,gradle-wrapper属性等来获得更多线索。但是恕我直言,迁移起来更好。

对于迁移,this可能会给您一些思路,如果不能解决确切的问题。

答案 5 :(得分:0)

我遇到了类似的问题。我不得不删除我的项目的 .cxx 文件夹来解决它。