我是新手,但我在解析某些字符串数组时遇到问题,这些字符串数组是JSON响应的一部分。
这是JSON响应。
{
"positive": [
"Relaxed",
"Uplifted",
"Hungry",
"Sleepy",
"Tingly"
],
"medical": [
"Eye Pressure",
"Insomnia",
"Stress",
"Fatigue",
"Headaches"
]
}
我该如何处理?
先谢谢您了:)
答案 0 :(得分:0)
您需要创建如下所示的POJO类
public class ExampleResponse {
private List < String > positive = null;
private List < String > medical = null;
public List < String > getPositive() {
return positive;
}
public void setPositive(List < String > positive) {
this.positive = positive;
}
public List < String > getMedical() {
return medical;
}
public void setMedical(List < String > medical) {
this.medical = medical;
}
}
运行良好。
答案 1 :(得分:0)
通过查看您的评论,我认为您的POJO类是正确的,但是您将它与Retrofit调用一起使用的方式是错误的。确保POJO类如下所示,
const re = /^(?=\w{6,})(?=.*\d{2})/;
console.log(re.test('23foob'));
console.log(re.test('foob23'));
console.log(re.test('aa1b23'));
并使用上面的POJO类。
您的API接口
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Foo {
@SerializedName("positive")
@Expose
private List<String> positive = null;
@SerializedName("medical")
@Expose
private List<String> medical = null;
public List<String> getPositive() {
return positive;
}
public List<String> getMedical() {
return medical;
}
}
下次使用API接口
import retrofit2.Call;
import retrofit2.http.GET;
public interface FooApiInterface {
/* pass POJO class to Call<> */
@GET("request/url")
Call<Foo> getFoo(/* parameters for the request if there any */);
/* other api calls here */
}
请注意,这里我使用FooApiInterface client = ...; // initialization
Call<Foo> fooCall = client.getFoo();
fooCall.enqueue(
new Callback<Foo>() {
@Override
public void onResponse(@NonNull Call<Foo> call, @NonNull Response<Foo> response) {
if (response.isSuccessful()) {
List<String> positiveList = response.body().getPositive();
List<String> medicalList = response.body().getMedical();
}
}
@Override
public void onFailure(@NonNull Call<Foo> call, @NonNull Throwable t) {
Log.e("error", "API Error ", t);
}
}
);
POJO类作为Foo
的参数,而不是Call
(如您的代码中使用的)。如果您按照上述说明修改代码,则可以消除错误
java.lang.IllegalStateException:预期为BEGIN_ARRAY,但在第1行第2列路径$错误处为BEGIN_OBJECT
出于演示目的,我使用了List<Strain>
示例。根据您的要求进行更改。