如何在改造中为json字符串响应编写模型类?

Posted

技术标签:

【中文标题】如何在改造中为json字符串响应编写模型类?【英文标题】:How to write a model class for json string response in retrofit? 【发布时间】:2021-08-29 13:21:12 【问题描述】:

您好,我是安卓新手,

我曾经使用过常规的 json 对象响应,但现在我被要求使用这样的 json 字符串响应,

"\"message\":\"OTP is sent to your Mobile number and Email id\",\"status\":true,\"existing_user\":true"

我不知道如何使用此响应调用 API。我搜索了如何做到这一点,但一无所获。如果有人知道如何完成它,请帮助我。 提前致谢!

【问题讨论】:

【参考方案1】:

首先,对于网络调用,您可以使用 Retrofit。

然后您可以使用此站点将您的 JSON 响应转换为 java 类 Json to java

例如,您的 JSON 被转换为下面的类

public class Output

public String message;
public Boolean status;
public Boolean existingUser;


【讨论】:

是传统方法吧?但它不适用于这种响应。我尝试过这个。它抛出 "com.google.gson.JsonSyntaxException: java.lang.IllegalStateException in android" 。不知道怎么回事 你需要删除json中的“\”字符以避免出现这个异常 另外请不要忘记从 JSON 的开头和结尾删除 " 字符 我现在明白了。谢谢!【参考方案2】:
package com.example;

import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

@Generated("jsonschema2pojo")
public class Example 

@SerializedName("message")
@Expose
private String message;

@SerializedName("status")
@Expose
private Boolean status;

@SerializedName("existing_user")
@Expose
private Boolean existingUser;

public String getMessage() 
return message;


public void setMessage(String message) 
this.message = message;


public Boolean getStatus() 
return status;


public void setStatus(Boolean status) 
this.status = status;


public Boolean getExistingUser() 
return existingUser;


public void setExistingUser(Boolean existingUser) 
this.existingUser = existingUser;



【讨论】:

以上是关于如何在改造中为json字符串响应编写模型类?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 3 中为来自 web 服务的 Json 响应创建模型类

如何将改造 JSON 响应转换为列表?

在 Kotlin 中为成功和错误处理两种不同的改造响应

如何编写解析此 JSON 的 Dart 模型类?

如何使用android studio中的改造服务在请求中传递json

Android:动态传递模型类来改造回调