我正在尝试从服务器获取响应并将其显示在微调器中。我的服务器返回包含JSON数组的响应。 JSON数组有两个字段 question 和 q_id 我想将这两个数据都存储在不同的字符串数组中,并希望使用 question 中的详细信息填充Spinner >,并使用从微调器中选择的问题的索引,我想从 q_id 数组中获取元素并将其发送到服务器
谢谢。
library(raster)
#sample rasters
r <- raster(extent(-180,179.9999, -55.91668 , 83.58326))
res(r)<-c(0.5/6, 0.5/6)
r <- setValues(r, runif(ncell(r)))
cellStats(r, sum) #3615229
temp_extent <- raster(extent(-180,180, -90 , 90))
res(temp_extent)<-c(0.5, 0.5)
# to get resolution (0.5, 0.5)
r1 <- aggregate(r, fact=6, fun=sum)
cellStats(r1, sum) #3615229
r1
# to get extent (-180,180,-90,90)
r2 <- resample(x= r1, y=temp_extent, method="bilinear") # what I am hoping is for NA to fill the added pixels
cellStats(r2, sum) #problem: gives different total value: 3615916
r2
{
"data": [
{
"q_id": "21",
"question": "Flipkart VS Amazone which is better?"
},
{
"q_id": "22",
"question": "Test"
},
],
"status": true,
"message": "Bank Ac created sucessfully"}
public class Question {
@SerializedName("data")
@Expose
private List<Datum> data = null;
@SerializedName("status")
@Expose
private Boolean status;
@SerializedName("message")
@Expose
private String message;
public List<Datum> getData() {
return data;
}
public void setData(List<Datum> data) {
this.data = data;
}
public Boolean getStatus() {
return status;
}
public void setStatus(Boolean status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
public class Datum {
@SerializedName("q_id")
@Expose
private String qId;
@SerializedName("question")
@Expose
private String question;
public String getQId() {
return qId;
}
public void setQId(String qId) {
this.qId = qId;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
}
private void getQuestions() {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().readTimeout(30, TimeUnit.SECONDS).writeTimeout(30, TimeUnit.SECONDS).addInterceptor(interceptor).build();
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(CommonObjects.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
getquestion Service = retrofit.create(getquestion.class);
Call<Question> call = Service.post(id);
call.enqueue(new Callback<Question>() {
@Override
public void onResponse(Call<Question> call, Response<Question> response) {
if (!response.body().getStatus()) {
message = response.body().getMessage();
showMessage(message);
} else {
Question jsonResponse = response.body();
message = response.body().getMessage();
CommonObjects.q.setData(jsonResponse.getData());
CommonObjects.q.setMessage(message);
CommonObjects.q.setStatus(response.body().getStatus());
}
}
@Override
public void onFailure(Call<Question> call, Throwable t) {
// handle execution failures like no internet connectivity
BusProvider.getInstance().post(new ErrorEvent(-2, t.getMessage()));
}
});
}
答案 0 :(得分:0)
您需要JSONObject和JSONArray类。
从服务器解析JSON响应的步骤。
实例化return { rows: mapped };
类,并将包含JSONObject
响应的变量传递到JSON
类的构造函数中。
JSONObject
JSONObject jsonObj = new JSONObject(jsonResponse);
类中可用的方法在JSON
响应中获取任何内容。例如,如果您需要JSONObject
数组来提取它,则可以使用data
方法并传入该数组的键(在您的情况下为getJSONArray
data
现在要提取JSONArray arr = jsonObj.getJSONArray("data");
数组中的数据,请使用data
类中可用的适当方法。
类似地,您可以使用JSONArray
和JSONObject
类提取其他数据。
请记住,如果您有JSONArray
对象,请使用JSON
类中可用的方法,如果您有JSONObject
数组,请使用JSON
类中可用的方法提取所需的数据。
答案 1 :(得分:0)
您可以像这样使用org.json库提取该JSON:
JSONArray
答案 2 :(得分:0)
使用这种类型的代码来解析Json数组。有关更多示例
JSONObject jsonObj = new JSONObject(jsonResponse);
JSONArray data = jsonObj.getJSONArray("data");
Question question = new Question();
List<Datum> datumList = new ArrayList<Datum>();
if (data != null) {
for (int i = 0; i < data.length(); i++) {
try {
JSONObject obj = (JSONObject) data.get(i);
Datum datum = new Datum();
datum.setQId(data.getString("q_id"));
datum.setQuestion(data.getString("question"));
datumList.add(datum);
} catch (Exception e) {
e.printStackTrace();
}
}
}
question.setData(datumList);
有关更多详细信息,请learn
答案 3 :(得分:0)
用于每个循环,并将数据填充到arraylist中。做这样的事情。
else {
ArrayList<String> QidList = new ArrayList<String>();
ArrayList<String> QuestionList = new ArrayList<String>();
Question jsonResponse = response.body();
message = response.body().getMessage();
CommonObjects.q.setData(jsonResponse.getData());
CommonObjects.q.setMessage(message);
CommonObjects.q.setStatus(response.body().getStatus());
for (Datum data : jsonResponse.getData()) {
if((!TextUtils.isEmpty(data.getQId())) &&
(!TextUtils.isEmpty(data.getQuestion()))){
QidList.add(data.getQId());
QuestionList.add(data.getQuestion());
}
}
}