java—发送json数组中第1行第1列路径$处输入的结尾

0g0grzrc  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(160)

我想在不同版本的改型中向服务器发送一个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\u id”:“17”,“mikhay”:“hi”,“price”:“200”,“cat\u id”:“20”},{“question”:نوع فضای مورد نظر خود را مشخص کنید:","键入“:”radio“,”field“:”تجاری/ اداری"},{"问题“:”آیا این مکان خالی از وسایل یا کلید نخورده است؟","键入“:”radio“,”field“:”خیر"},{"问题“:”متراژ فضای مورد نظر","键入“:”radio“,”field“:”50الی 70متر"},{"问题“:”برآوردتان از مدت زمان لازم برای انجام کار چند ساعت است؟","键入“:”radio“,”field“:”5ساعت"},{"问题“:”به متتخصص آقا نیاز دارید یا خانم؟","键入“:”radio“,”field“:”خانم"},{"问题“:”خدمات مورد نظر خود را مشخص کنید:","键入“:”复选框“,”字段“:”مرتب کردن داخل کابینت و کمد"},{"问题“:”آیا از حیوانات خانگی نگهداری میکنید؟","键入“:”radio“,”field“:”خیر"},{"问题“:”آیا در محل شما بیمار مبتلا به کرونا حضور دارد؟","键入“:”radio“,”field“:”خیر"},{"问题“:”توضیحات تکمیلی:","键入“:”文本“,”字段“:”لات"},{"问题“:”عکس از محل تمیزکاری","键入“:”pic“,”field“:”http://kara-service.ir/pl_include/pic/user__1__photo__72.jpg},{“问题”:تعداد زن و مرد","键入“:”gender“,”field“:”1-0“},{”question“:”جه زمانی به این سرویس نیاز دارید؟","键入“:”date“,”field“:”1399/9/26“},{”question“:”محل انجام سفارش","键入“:”地址“,”字段“:”اصفهان خیابان کاوه"},{"问题“:”محل انجام سفارش","键入“:”文本“,”字段“:”ددک"}]
2020-12-16 10:08:25.845 30914-30914/com.example.zafarapp e/test3:onfailure:第1行第1列路径输入结束$

eivnm1vs

eivnm1vs1#

为什么要用jsonarray?您可以创建一个模型类,并将其直接传递给body,改装gsonverterfactory自动将其转换为json,然后发送到服务器。
对于您的模型类,您可以添加所有字段作为参数,并只填充必需的字段(改装不会发送空字段)
根据上述内容,您的模型类将如下所示:

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;
}

相关问题