java - 应为 BEGIN_OBJECT,但在第 5 行第 1 列路径$ 处为字符串。我收到此错误,结果发现任何解决方案都不起作用

标签 java api retrofit

我在 Github 问题上发现清理项目效果很好,但没有帮助。 我正在使用 retofit 2。这些是依赖项 -

实现“com.squareup.retrofit2:retrofit:2.8.1”

实现“com.squareup.retrofit2:converter-gson:2.8.1”

实现“com.google.code.gson:gson:2.8.5”

我的模型类

public class Register {
    private String email,password,firstname,lastname,snuid;

    public Register(String email, String password, String firstname, String lastname, String snuid) {
        this.email = email;
        this.password = password;
        this.firstname = firstname;
        this.lastname = lastname;
        this.snuid = snuid;
    }
}

我的 JsonApiHolder 类

public interface Pythonforeverybody {
    @GET("medicines")
    Call<List<Post>> getprods();

    @GET("medicines/{id}")
    Call<List<Post>> getprods (@Path("id") int id1);


    @POST("register/")
    Call <Register> getreg(@Body Register register);


}

以及主要 Activity 中的方法

   private void postcontent() {
        Register register = new Register("ss501@snu.edu.in",
                "123456","Shardul","Singh","ss501");

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

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https:// Some API") 
                 //I gave the correct Api link over here, no problem with that 
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();


        Pythonforeverybody jsonPlaceHolderApi = retrofit.create(Pythonforeverybody.class);
        Call<Register> call = jsonPlaceHolderApi.getreg(register);



        call.enqueue(new Callback<Register>() {
            @Override
            public void onResponse(Call<Register> call, Response<Register> response) {
                if (!response.isSuccessful()) {
                    tv.setText("Code hh: " + response.code());
                    return;
                }
                String content = "";
                    content += "Code  " + response.code() + "\n";
                   tv.append(content);
                }

            @Override
            public void onFailure(Call<Register> call, Throwable t)
            {
                tv.setText(t.getMessage());
            }


        });



    }
}

最佳答案

使用这个:

@POST("register/?format=json")
    Call <Register> getreg(@Body Register register);

而不是

@POST("register/")
    Call <Register> getreg(@Body Register register);

关于java - 应为 BEGIN_OBJECT,但在第 5 行第 1 列路径$ 处为字符串。我收到此错误,结果发现任何解决方案都不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61571083/

相关文章:

java - 方法调用可能产生 NullPointerException Retrofit Body

java - Netty - 默认情况下所有创建的缓冲区都是小端字节序

java - 如何使用 Javassist 从源代码加载类?

android - 如何在改造 API 方法中传递 POST 参数?

android - 带改造的@POST数组

jQuery 和 Google map json 响应

java - 如何统计无状态服务中的递归次数?

java - 解码 JAXB 的 WebLogic 12c 迁移问题

android - Jelly Bean 中 Android 系统栏的新 API?

javascript - 文件上传 - Node Js(Express) 到 React Js。如何获取正确的图片路径?