我试图从凌空转换到改造,我不完全理解如何使用包含JSONArray的JSONObject进行PUT。
我想发送给服务器的JSONObject主体应如下所示:
{
“account”: [
{“availability”: “offline”}
]}
这是我的pojo
public class AvailabilityModel {
JSONObject account;
public AvailabilityModel(JSONObject account) {
this.account = account;
}
}
和我的界面
public interface AvailabilityAPI {
@Headers( "Content-Type: application/json" )
@PUT(PATH)
Call<AccountParentModel> setAvailability(@Path("parameter") String accountId, @Body AvailabilityModel object);
class Factory {
private static AvailabilityAPI service;
public static AvailabilityAPI getInstance() {
if (service == null) {
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(App.BASE_URL)
.build();
return service = retrofit.create(AvailabilityAPI.class);
} else {
return service;
}
}
}
}
最后,在我的活动中,我这样做:
JSONObject account = new JSONObject();
JSONArray array = new JSONArray();
JSONObject obj = new JSONObject();
try {
obj.put("availability", "offline");
} catch (JSONException e) {
e.printStackTrace();
}
array.put(obj);
try {
cloudNumber.put("account", array);
} catch (JSONException e) {
e.printStackTrace();
}
Log.e(this.getClass().getSimpleName(), "JSONObj sent to the server is: " + account);
AvailabilityModel availabilityModel = new AvailabilityModel(account);
AvailabilityAPI.Factory.getInstance().setAvailability(accountId, availabilityModel).enqueue(new Callback<AccountParentModel>() {
@Override
public void onResponse(Call<CloudNumberParentModel> call, Response<CloudNumberParentModel> response) {
Log.e("HomeActivity", "Success: availability = " + response.body().cloudNumbers.get(0).getAvailability());
}
@Override
public void onFailure(Call<CloudNumberParentModel> call, Throwable t) {
Log.e(this.getClass().getSimpleName(), " No good bro " + t.getMessage());
}
});
问题是服务器以这种格式接收它:
{“nameValuePairs”:{“account”:{“values”:[{“nameValuePairs”:{“availability”:“available”}}]}}}
非常感谢任何帮助。
答案 0 :(得分:1)
不要那样做..
让我简单介绍一下,了解一下。
步骤1.接受你的json要求。
在你的情况下
{ “account”: [ {“availability”: “offline”} ]}
第2步。制作模特课。
我在这里描述Link
因此,在您的情况下,您的模型类是。
public class AvailabilityModel {
private List<AccountBean> account;
public List<AccountBean> getAccount() {
return account;
}
public void setAccount(List<AccountBean> account) {
this.account = account;
}
public static class AccountBean {
/**
* availability : offline
*/
private String availability;
public String getAvailability() {
return availability;
}
public void setAvailability(String availability) {
this.availability = availability;
}
}
}
第3步:将值放入模型类
首先
AccountBean account = new AccountBean();
account.setAvailability("offline");
现在拿一个数组
List<AccountBean>list = new List<AccountBean>();
list.add(account);
以上是您的帐户列表。现在是完成制作模型的一步。
AvailabilityModel model =new AvailabilityModel();
model. setAccount(list);
快乐编码:)