wcf和android - 如何避免无法识别的转义序列

时间:2013-11-26 20:48:32

标签: android json wcf web-services

我一直在向wcf webservice发送数据,这会导致复杂的json窒息。当我运行调试器时,我可以看到wcf完全忽略了incomming值,当我尝试设置参数时,我得到无法识别的转义序列。我如何强迫wcf接受数据并停止抱怨像一位破碎的老太太。

继续我的json进入后变为null

{"dtTourReports":["{\"ReportedBy\":\"0101\",\"TourReportData\":[{\"ReportDataType\":\"text\",\"ReportDataTypeID\":11,\"ReportDataTypeTitle\":\"Person in Charge-Persona ancargada\",\"ReportData\":\"Jamie Andresakis\"},{\"ReportDataType\":\"bool\",\"ReportDataTypeID\":12,\"ReportDataTypeTitle\":\"Dry-Clean\",\"ReportData\":\"true\"},{\"ReportDataType\":\"bool\",\"ReportDataTypeID\":13,\"ReportDataTypeTitle\":\"Wet-Spill\",\"ReportData\":\"true\"},{\"ReportDataType\":\"bool\",\"ReportDataTypeID\":14,\"ReportDataTypeTitle\":\"Food Spill\",\"ReportData\":\"true\"},{\"ReportDataType\":\"text\",\"ReportDataTypeID\":15,\"ReportDataTypeTitle\":\"Other\",\"ReportData\":\"Test\"},{\"ReportDataType\":\"text\",\"ReportDataTypeID\":16,\"ReportDataTypeTitle\":\"Comments\",\"ReportData\":\"Test \"},{\"ReportDataType\":\"time\",\"ReportDataTypeID\":17,\"ReportDataTypeTitle\":\"Time of Inspection\",\"ReportData\":\"11-25-2013 07:29:18 PM\"}],\"localID\":1,\"TourInstanceID\":1,\"TourDetailID\":43,\"TourReportTypeID\":2,\"TourReportType\":\"Area Report\",\"TourReportComments\":\"Person in Charge-Persona ancargada: User 1<br \\\/> <br \\\/>Other: Test<br \\\/> <br \\\/>Comments: Test <br \\\/> <br \\\/>\",\"DateCreated\":\"11-25-2013 07:29:35 PM\"}"]}

1 个答案:

答案 0 :(得分:0)

这就是我最终解决问题的方法。我想当使用JSONObject并将它们放入jsonarray时,你最终会得到wcf抱怨的额外转义。

if(cr.moveToFirst()){

        reports = new JSONArray();

        do{

            try{

                SessionData session = new SessionData(getApplicationContext());

                JSONArray ja = new JSONArray(cr.getString(cr.getColumnIndex(gh._ReportData)));

                 JSONStringer jo = new JSONStringer().object().
                         key("ReportedBy").value(cr.getInt(cr.getColumnIndex(gh._CreatedBy)) != 0
                         ? cr.getInt(cr.getColumnIndex(gh._CreatedBy)) : session.UserID_get()).
                         key("TourReportData").value(ja).
                         key("localID").value(cr.getInt(cr.getColumnIndex(gh._LocalID))).
                         key("TourInstanceID").value(cr.getInt(cr.getColumnIndex(gh._TourInstanceID))).
                         key("TourDetailID").value(cr.getInt(cr.getColumnIndex(gh._TourDetailID))).
                         key("TourReportTypeID").value(cr.getInt(cr.getColumnIndex(gh.GuardTourReports_ReportTypeID))).
                         key("TourReportType").value(cr.getString(cr.getColumnIndex(gh.GuardTourReports_ReportType))).
                         key("TourReportComments").value(cr.getString(cr.getColumnIndex(gh._TourReportComments))).
                             key("DateCreated").value(cr.getString(cr.getColumnIndex(gh._DateCreated)))
                .endObject();

                reports.put(jo);
            }
            catch(JSONException jse){
                jse.printStackTrace();
                return null;
            }
            catch(Exception e){
                e.printStackTrace();
                return null;
            }

        }while(cr.moveToNext());