我有这样的JSON:* * 已编辑**
{
"tgl_Lahir": "1960-12-18 00:00:00",
"nama": "Rahmi P",
"keterangan": "HIDUP",
"tempatLahir": "YOGYAKARTA",
"noPegawai": "010713",
"golDarah": "0",
"statusNikah": "0",
"hubungans": {
"id": "10"
},
"agama": {
"id_Agama": "1"
},
"jeniskelamin": {
"jenisKelamin": "1"
}
}
我有这个接口类:
@FormUrlEncoded
@POST("http://ipaddress/family/add")
Call<familylistresponse> addFams(@Header("Content-Type") String content_type,
@Header("Authorization") String auth,
@Query("id") String id,
// @Field("noPegawai") JSONObject noPegawai,
@Field("agama") JSONObject agama,
@Field("hubungans") JSONObject hubungans,
@Field("jeniskelamin") JSONObject jeniskelamin,
@Field("tgl_Lahir") JSONObject tgl_lahir,
@Field("nama") JSONObject nama,
@Field("keterangan") JSONObject keterangan,
@Field("tempatLahir") JSONObject tempatLahir,
@Field("golDarah") JSONObject goldar,
@Field("statusNikah") JSONObject statusNikah);
我想将数据存储到数据库服务器,所以我将此方法添加到我的button.setOnClickListener中:
public void addFamily(String noPegawai, String agama, String hubungan, String jenisKelamins, String tgl_Lahir, String nama, String keterangan, String tempatLahir, String golDarah, String statusNikah){
String id=null;
SharedPreferences preferences = getSharedPreferences("MyPref",0);
String tokens = preferences.getString("userToken",null);
try {
jsonObject.put("noPegawai", noPegawai);
jsonObject.put("agama", agama);
jsonObject.put("hubungans", hubungan);
jsonObject.put("jeniskelamin", jenisKelamins);
jsonObject.put("tgl_Lahir", tgl_Lahir);
jsonObject.put("nama", nama);
jsonObject.put("keterangan", keterangan);
jsonObject.put("tempatLahir", tempatLahir);
jsonObject.put("golDarah", golDarah);
jsonObject.put("statusNikah", statusNikah);
} catch (JSONException e) {
e.printStackTrace();
}
Call<familylistresponse> call = apiService.addFams("application/json","Bearer " + tokens , id, jsonObject, jsonObject, jsonObject, jsonObject , jsonObject, jsonObject, jsonObject, jsonObject, jsonObject);
call.enqueue(new Callback<familylistresponse>() {
@Override
public void onResponse(Call<familylistresponse> call, Response<familylistresponse> response) {
try {
if(response.body()!=null)
Toast.makeText(TambahDataKeluarga.this," response message success "+response.body(),Toast.LENGTH_LONG).show();
if(response.errorBody()!=null)
Toast.makeText(TambahDataKeluarga.this," response message error "+response.errorBody().string(),Toast.LENGTH_LONG).show();
Log.e("ERROR: ", response.errorBody().string());
}catch (Exception e){
e.printStackTrace();
}
Toast.makeText(TambahDataKeluarga.this," Tokens "+tokens,Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Call<familylistresponse> call, Throwable t) {
Log.e("ERROR: ", t.getMessage());
}
});
}
但当我尝试将其发布到服务器时,它显示了此错误
有什么想法吗?或者是因为我嵌套的儿子?或者是我接口的类?谢谢
4条答案
按热度按时间ia2d9nvy1#
但是阿迦玛只是一个
string
,所以像这样求解"agama":"1"
csbfibhn2#
像这样设置值。
把你的要求这样转达。
agyaoht73#
接口类:
在参数中传递JSON对象
wsxa1bj14#
我已经解决了这个问题!我不知道这是否会成为未来读者的解决方案。但至少它会有一点帮助。
1.接口类:我只是将表单格式更改为@Body类型,我认为这使我更容易实际插入数据,您只需按顺序对输入类型值进行排序,以便将其自动插入到您的服务器API输入格式中。
2.嵌套对象:之前,我尝试过你们这些天给我的一些解决方案,谢谢你们。但是我解决我的问题所做的是不同的。所以正如你们所看到的,我在agamas,hubungans和jeniskelamin上嵌套了对象。我做了什么?这只是一个简单的例子,就像这样(调用你的“GSON生成类”):
之后,您只需要将这些变量添加到Activity的主模型类中:
**嘣!就这样~**这是一个额外的提示:请确保您在客户端应用程序上设置的变量与您在数据库服务器上设置的变量相同!:D Ur Welcome ~~如果您觉得这个答案有帮助,请为它投票!