当前位置: 首页 > 知识库问答 >
问题:

如何将POJO对象转换为指定字段的gson字符串?

阎阳
2023-03-14
{"email":"email@email.com", "password":"", "password_confirmation":"", "token":""}
{"email":"email@email.com"}
   public class User {

    private String email;
    private String password;
    private String password_confirmation;
    private String token;

    public User() {
       this.email="";
       this.password="";
       this.password_confirmation="";
       this.token="";
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword_confirmation() {
        return password_confirmation;
    }

    public void setPassword_confirmation(String password_confirmation) {
        this.password_confirmation = password_confirmation;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }
}
public interface Api{

  @POST("/api/password/create")
  @Headers({"Accept:application/json", "Content-Type:application/json"})
  Call<User> Create(@Body RequestBody requestBody); 

}

我的改装方法

 private void authenticateEmail(final Context context) {

        User user=new User();
        Api api=new Api();

        String email = edt_forgot_email.getText().toString().trim();

       Gson gson = new GsonBuilder()
                    .setDateFormat(SERVICE_DATE_FORMAT)
                    .setLenient()
                    .create();
        api = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();

        user.setEmail(email);
        Gson lGson = new GsonBuilder().setDateFormat(SERVICE_DATE_FORMAT).create();
        String jsonString =  lGson.toJson(user);
        Log.d("debug", "jsonString==>" + jsonString);


        final RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonString);
        Call<User> call = api.Create(requestBody);
        Log.d("debug", "url: " + call.request().url().toString());

        call.enqueue(new Callback<User>() {
            @Override
            public void onResponse(@NonNull Call<User> call, @NonNull Response<User> response) {
                Log.d("debug", "responsecode==>" + response.code());
                Log.d("debug", "responsebody==>" + response.body());

                if (response.code() == 200) {

                   String msg = "We have emailed you OTP";
                  Toast.makeText(activity, msg, Toast.LENGTH_SHORT).show();

                } 
            }

            @Override
            public void onFailure(@NonNull Call<User> call, @NonNull Throwable t) {

               Toast.makeText(activity, "server error",Toast.LENGTH_SHORT).show();

            }
        });
    }

共有1个答案

皇甫敏达
2023-03-14

从构造函数中删除此代码:

public User() {
    this.email="";
    this.password="";
    this.password_confirmation="";
    this.token="";
}

如果希望从输出json中排除空值,则应将其设置为NULL。

祝你好运!

 类似资料:
  • 问题内容: 我正在尝试使用GSON将JSON对象转换为POJO。 JSON字串 与GSON一起使用的AutomationProjectsList类 自动化项目POJO 我正在使用的代码 JSONArray jsonArray =新的JSONArray(response.getEntity(String.class)); 但是它给出了一个例外: 为什么会收到IndexOutOfBoundsExcep

  • 问题内容: 我有以下字符串: 如何使用Google / GSON将其转换为Java POJO? 问题答案: 通过使用http://www.jsonschema2pojo.org/或通过在Studio中添加插件(https://github.com/Hexara/Json2Pojo)生成POJO 现在添加依赖项: 将您的json或字符串转换为POJO

  • 我想将以下字符串转换为对象: 要将其转换为对象,我创建了以下类: 我使用Jackson库转换到。以下是我如何使用杰克逊转换: 问题是,在转换上面的中User对象始终是空的。我做错了什么? 提前谢谢。

  • 问题内容: 我有一串 现在我必须获取Date对象。我的DateObject应该与startDate的值相同。 我就是这样 但是输出是格式 问题答案: 基本上,你可以有效地将字符串格式的日期转换为日期对象。如果此时将其打印出来,则将获得标准日期格式输出。为了在此之后对其进行格式化,然后需要将其转换回具有指定格式(先前已经指定)的日期对象。

  • 假设我已将以下对象序列化为json字符串: 现在我想反序列化它,但是我想把名称分成两个字段,和。我该怎么做呢? 我希望最终的结果是类似于: 这对Gson有可能吗?

  • 我正在尝试从json转换为Java对象。我收到一个json字符串,其中包括一个书籍列表: 我创建了一个名为Books的对象: 另外,我正在使用doGet方法从RESTful webservice中以以下方式检索这些数据: 干杯