在第 1 行第 1 列路径 $ 内输入的结尾发送一个 json 数组
End of input at line 1 column 1 path $ within send a json array
我想在 retrofit.but 的不同版本中将 json 数组发送到服务器 我只是给出了这个错误:
第 1 行第 1 列路径输入结束 $
我的 java 代码是:
private void setOnClickSubmit() {
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
load_submit.setVisibility(View.VISIBLE);
btn_submit.setAlpha(0.5f);
btn_submit.setText("");
btn_submit.setEnabled(false);
btn_exit.setAlpha(0.5f);
btn_exit.setEnabled(false);
ansInf = intent.getExtras().getParcelableArrayList("answers");
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject =new JSONObject();
try {
jsonObject.put("user_id","17");
jsonObject.put("mikhay", new SecurityCode().getSecCode());
jsonObject.put("price", "200");
jsonObject.put("cat_id", "20");
jsonArray.put(jsonObject);
for(int i = 0 ; i < ansInf.size() ; i++){
JSONObject jsonObject1 =new JSONObject();
jsonObject1.put("question",ansInf.get(i).getQuestion());
jsonObject1.put("type", ansInf.get(i).getType());
jsonObject1.put("field", ansInf.get(i).getAnswer());
jsonArray.put(jsonObject1);
}
Log.i("test3", "setOnClickSubmit: " + jsonArray);
ApiClient.getInstance().getApi().CatInf(jsonArray).enqueue(new Callback<Status>() {
@Override
public void onResponse(Call<Status> call, Response<Status> response) {
Log.e("test3", "onResponse: "+response.body().getStatus() );
if (response.isSuccessful() && response.body().getStatus().equals("successfull")){
load_submit.setVisibility(View.GONE);
btn_submit.setAlpha(1f);
btn_submit.setText("ثبت نهایی");
btn_submit.setEnabled(true);
btn_exit.setAlpha(1f);
btn_exit.setEnabled(true);
Snackbar snackbar = Snackbar
.make(findViewById(android.R.id.content)
,"با موفقیت ثبت شد. به سفارشات مراجعه کنید.",
Snackbar.LENGTH_LONG).
setAction("سفارشات", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
snackbar.getView().setBackgroundColor(ContextCompat.getColor(PriceActivity.this, R.color.blue8));
snackbar.setActionTextColor(getResources().getColor(R.color.white));
snackbar.show();
}
else {
load_submit.setVisibility(View.GONE);
btn_submit.setAlpha(1f);
btn_submit.setText("ثبت نهایی");
btn_submit.setEnabled(true);
btn_exit.setAlpha(1f);
btn_exit.setEnabled(true);
Snackbar snackbar = Snackbar
.make(findViewById(android.R.id.content)
,"مشکلی پیش آمد",
Snackbar.LENGTH_LONG).
setAction("باشه!", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
snackbar.getView().setBackgroundColor(ContextCompat.getColor(PriceActivity.this, R.color.blue8));
snackbar.setActionTextColor(getResources().getColor(R.color.white));
snackbar.show();
}
}
@Override
public void onFailure(Call<Status> call, Throwable t) {
load_submit.setVisibility(View.GONE);
btn_submit.setAlpha(1f);
btn_submit.setText("ثبت نهایی");
btn_submit.setEnabled(true);
btn_exit.setAlpha(1f);
btn_exit.setEnabled(true);
Log.e("test3", "onFailure: "+t.getMessage());
Snackbar snackbar = Snackbar
.make(findViewById(android.R.id.content)
,"خطا برقراری ارتباط با سرور",
Snackbar.LENGTH_LONG).
setAction("باشه!", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
snackbar.getView().setBackgroundColor(ContextCompat.getColor(PriceActivity.this, R.color.blue8));
snackbar.setActionTextColor(getResources().getColor(R.color.white));
snackbar.show();
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
我的界面是:
@POST("add_service")
Call<Status> CatInf(@Body JSONArray jsonArray);
我的日志是:
[{"user_id":"17","mikhay":"hi","price":"200","cat_id":"20"},{"question":"نوع
فضای مورد نظر خود را مشخص کنید:","type":"radio","field":"تجاری/
اداری"},{"question":"آیا این مکان خالی از وسایل یا کلید نخورده
است؟","type":"radio","field":"خیر"},{"question":"متراژ فضای مورد
نظر","type":"radio","field":"50 الی 70 متر"},{"question":"برآوردتان از
مدت زمان لازم برای انجام کار چند ساعت است؟","type":"radio","field":"5
ساعت"},{"question":"به متتخصص آقا نیاز دارید یا
خانم؟","type":"radio","field":"خانم"},{"question":"خدمات مورد نظر خود
را مشخص کنید:","type":"checkbox","field":"مرتب کردن داخل کابینت و
کمد"},{"question":"آیا از حیوانات خانگی نگهداری
میکنید؟","type":"radio","field":"خیر"},{"question":"آیا در محل شما
بیمار مبتلا به کرونا حضور
دارد؟","type":"radio","field":"خیر"},{"question":"توضیحات
تکمیلی:","type":"text","field":"لات"},{"question":"عکس از محل
تمیزکاری","type":"pic","field":"http://kara-service.ir/pl_include/pic/user__1__photo__72.jpg"},{"question":"تعداد
زن و مرد","type":"gender","field":"1-0"},{"question":"جه زمانی به این
سرویس نیاز
دارید؟","type":"date","field":"1399/9/26"},{"question":"محل انجام
سفارش","type":"address","field":"اصفهان خیابان کاوه"},{"question":"محل
انجام سفارش","type":"text","field":"ددک"}]
2020-12-16 10:08:25.845 30914-30914/com.example.zafarapp E/test3:
onFailure: End of input at line 1 column 1 path $
为什么要使用 JSONArray?
你可以创建一个模型class,然后直接传递给body,改造GsonConverterFactory自动将它转换为json,然后发送到服务器。
对于您的模型 class,您可以将所有字段添加为参数,并仅填写必填字段(Retrofit 不会发送空字段。)
根据以上内容,您的模型 class 将如下所示:
public class Data {
@SerializedName("field")
public String field=null;
@SerializedName("type")
public String type=null;
@SerializedName("question")
public String question=null;
@SerializedName("cat_id")
public String catId=null;
@SerializedName("price")
public String price=null;
@SerializedName("mikhay")
public String mikhay=null;
@SerializedName("user_id")
public String userId=null;
}
我想在 retrofit.but 的不同版本中将 json 数组发送到服务器 我只是给出了这个错误:
第 1 行第 1 列路径输入结束 $
我的 java 代码是:
private void setOnClickSubmit() {
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
load_submit.setVisibility(View.VISIBLE);
btn_submit.setAlpha(0.5f);
btn_submit.setText("");
btn_submit.setEnabled(false);
btn_exit.setAlpha(0.5f);
btn_exit.setEnabled(false);
ansInf = intent.getExtras().getParcelableArrayList("answers");
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject =new JSONObject();
try {
jsonObject.put("user_id","17");
jsonObject.put("mikhay", new SecurityCode().getSecCode());
jsonObject.put("price", "200");
jsonObject.put("cat_id", "20");
jsonArray.put(jsonObject);
for(int i = 0 ; i < ansInf.size() ; i++){
JSONObject jsonObject1 =new JSONObject();
jsonObject1.put("question",ansInf.get(i).getQuestion());
jsonObject1.put("type", ansInf.get(i).getType());
jsonObject1.put("field", ansInf.get(i).getAnswer());
jsonArray.put(jsonObject1);
}
Log.i("test3", "setOnClickSubmit: " + jsonArray);
ApiClient.getInstance().getApi().CatInf(jsonArray).enqueue(new Callback<Status>() {
@Override
public void onResponse(Call<Status> call, Response<Status> response) {
Log.e("test3", "onResponse: "+response.body().getStatus() );
if (response.isSuccessful() && response.body().getStatus().equals("successfull")){
load_submit.setVisibility(View.GONE);
btn_submit.setAlpha(1f);
btn_submit.setText("ثبت نهایی");
btn_submit.setEnabled(true);
btn_exit.setAlpha(1f);
btn_exit.setEnabled(true);
Snackbar snackbar = Snackbar
.make(findViewById(android.R.id.content)
,"با موفقیت ثبت شد. به سفارشات مراجعه کنید.",
Snackbar.LENGTH_LONG).
setAction("سفارشات", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
snackbar.getView().setBackgroundColor(ContextCompat.getColor(PriceActivity.this, R.color.blue8));
snackbar.setActionTextColor(getResources().getColor(R.color.white));
snackbar.show();
}
else {
load_submit.setVisibility(View.GONE);
btn_submit.setAlpha(1f);
btn_submit.setText("ثبت نهایی");
btn_submit.setEnabled(true);
btn_exit.setAlpha(1f);
btn_exit.setEnabled(true);
Snackbar snackbar = Snackbar
.make(findViewById(android.R.id.content)
,"مشکلی پیش آمد",
Snackbar.LENGTH_LONG).
setAction("باشه!", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
snackbar.getView().setBackgroundColor(ContextCompat.getColor(PriceActivity.this, R.color.blue8));
snackbar.setActionTextColor(getResources().getColor(R.color.white));
snackbar.show();
}
}
@Override
public void onFailure(Call<Status> call, Throwable t) {
load_submit.setVisibility(View.GONE);
btn_submit.setAlpha(1f);
btn_submit.setText("ثبت نهایی");
btn_submit.setEnabled(true);
btn_exit.setAlpha(1f);
btn_exit.setEnabled(true);
Log.e("test3", "onFailure: "+t.getMessage());
Snackbar snackbar = Snackbar
.make(findViewById(android.R.id.content)
,"خطا برقراری ارتباط با سرور",
Snackbar.LENGTH_LONG).
setAction("باشه!", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
snackbar.getView().setBackgroundColor(ContextCompat.getColor(PriceActivity.this, R.color.blue8));
snackbar.setActionTextColor(getResources().getColor(R.color.white));
snackbar.show();
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
我的界面是:
@POST("add_service")
Call<Status> CatInf(@Body JSONArray jsonArray);
我的日志是:
[{"user_id":"17","mikhay":"hi","price":"200","cat_id":"20"},{"question":"نوع فضای مورد نظر خود را مشخص کنید:","type":"radio","field":"تجاری/ اداری"},{"question":"آیا این مکان خالی از وسایل یا کلید نخورده است؟","type":"radio","field":"خیر"},{"question":"متراژ فضای مورد نظر","type":"radio","field":"50 الی 70 متر"},{"question":"برآوردتان از مدت زمان لازم برای انجام کار چند ساعت است؟","type":"radio","field":"5 ساعت"},{"question":"به متتخصص آقا نیاز دارید یا خانم؟","type":"radio","field":"خانم"},{"question":"خدمات مورد نظر خود را مشخص کنید:","type":"checkbox","field":"مرتب کردن داخل کابینت و کمد"},{"question":"آیا از حیوانات خانگی نگهداری میکنید؟","type":"radio","field":"خیر"},{"question":"آیا در محل شما بیمار مبتلا به کرونا حضور دارد؟","type":"radio","field":"خیر"},{"question":"توضیحات تکمیلی:","type":"text","field":"لات"},{"question":"عکس از محل تمیزکاری","type":"pic","field":"http://kara-service.ir/pl_include/pic/user__1__photo__72.jpg"},{"question":"تعداد زن و مرد","type":"gender","field":"1-0"},{"question":"جه زمانی به این سرویس نیاز دارید؟","type":"date","field":"1399/9/26"},{"question":"محل انجام سفارش","type":"address","field":"اصفهان خیابان کاوه"},{"question":"محل انجام سفارش","type":"text","field":"ددک"}]
2020-12-16 10:08:25.845 30914-30914/com.example.zafarapp E/test3: onFailure: End of input at line 1 column 1 path $
为什么要使用 JSONArray? 你可以创建一个模型class,然后直接传递给body,改造GsonConverterFactory自动将它转换为json,然后发送到服务器。
对于您的模型 class,您可以将所有字段添加为参数,并仅填写必填字段(Retrofit 不会发送空字段。)
根据以上内容,您的模型 class 将如下所示:
public class Data {
@SerializedName("field")
public String field=null;
@SerializedName("type")
public String type=null;
@SerializedName("question")
public String question=null;
@SerializedName("cat_id")
public String catId=null;
@SerializedName("price")
public String price=null;
@SerializedName("mikhay")
public String mikhay=null;
@SerializedName("user_id")
public String userId=null;
}