[android]在 Retrift API 的畸形 JSON 吗?

标签: json Java Android
发布时间: 2017/3/4 5:22:56
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我在新的 Android 发展。这是我的 MainActivity.java。我已经设置了宽松和仍然接收错误D/onFailure: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $

API 返回︰ 它要么 Success 或像验证Error: FirstName is invalid.

private void saveUser() {
    showpDialog();

    Gson gson = new GsonBuilder().setLenient().create();

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("BASE_URL")
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();

    APIService service = retrofit.create(APIService.class);
    User user = new User();

    user.setFirstName(editName.getText().toString());

    Call<User> call = service.saveUser(user.getFirstName());

    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Response<User> response) {
            hidepDialog();
            Log.d("onResponse", "" + response.code() +
                    "  response body "  + response.body() +
                    " responseError " + response.errorBody() + " responseMessage " +
                    response.message());
        }

        @Override
        public void onFailure(Throwable t) {
            hidepDialog();
            Log.d("onFailure", t.toString());
        }
    });

}

香港专业教育学院被搜索,他们都说我需要到 setLenient 为 true,但我已经做的。你知道吗?

解决方法 1:

无论是 SuccessValidation 不是一个有效的 JSON。我认为这就是为什么它的格式不正确。JSON 有点像这样︰

{ "status": "success" }

所以,你应该不解析它以 json 格式,但只是改为在作为原始字符串。或者,这是更好地使你来自服务器的响应,成为有效 JSON 喜欢以上。

更多更多更好,使其基于 Rest,这就是读取的状态而不是响应的 HTTP 响应状态从身体,要么是 200 OK 或其他状态代码。但它不成问题,所以现在只是使用 JSON。

官方微信
官方QQ群
31647020