0

Android アプリケーションは、サービスを介して Android sqlite データベースから SQL サーバー db にデータを転送します。これはうまくいっています。問題は double 型の値で、整数に変換されます (GPS 位置座標だけではありません)。

これは私のコードです:

  JSONArray jaVisitDetail= new JSONArray();
  StringBuffer visitDetail = new StringBuffer();           
  visitDetail.append("{\"WMVisitDetail\":");
  for (int i = 0; i < stringList.size(); i++) {
      ArrayList<?> arrayList = (ArrayList<?>) stringList.get(i);
      ArrayList<?> list = arrayList;
       if(((String) list.get(20)) != null && !((String) list.get(20)).equals("")) {
               //DecimalFormat df = new DecimalFormat("#0.0000");
              visitDe.put("Latitude",Double.parseDouble((String)list.get(20)));
              //visitDe.put("Latitude",df.format(Double.parseDouble((String)list.get(20))));
              //visitDe.put("Latitude",(String)list.get(20));
       }else {
             visitDe.put("Latitude",0.0000);
       }


    if(((String) list.get(21)) != null && !((String) list.get(21)).equals("")) {
            //DecimalFormat df = new DecimalFormat("#0.0000");
            visitDe.put("Longitude",Double.parseDouble((String)list.get(21)));
            //visitDe.put("Longitude",df.format(Double.parseDouble((String)list.get(21))));
            //visitDe.put("Longitude",(String)list.get(21));
    }else {
         visitDe.put("Longitude",0.0000);
    }

jaVisitDetail.put(visitDe);

}
 visitDetail.append(jaVisitDetail.toString());
 visitDetail.append("}");

これはC#コードです:

    public bool convertJSONToDataSet(string strBusinessUnit, string strExecutiveCode, string strTableName, string jsonContent)
    {
        bool status =false;
        try
        {
            DataSet ds = JsonConvert.DeserializeObject<DataSet>(jsonContent);
            DataTable dt = ds.Tables[0];
            status = UpdateUploadData(strBusinessUnit, strExecutiveCode, strTableName, dt);
        }
        catch (FaultException err)
        {
            status = false;
        }
        catch (Exception error)
        {
            string gg = error.Message;
            Console.WriteLine(gg);
            status = false;
        }
        return status;
    }

Longitude /latitudeを double として送信すると、DeserializeObject はこれを整数として受け取ります

as 文字列を送信するLongitude /latitudeと、エラーは次のようになります。

     `Input string was not in a correct format.Couldn't store <6.9292> in Latitude Column.  Expected type is Int64.`

これはjsonデータのセットです

     {
     "ExecutiveCode":"EXEC03",
     "ReasonCode":" ",
     "SurveyNumber":" ",
     "RetailerCode":"2975",
     "UploadedType":" ",
     "CallStartTime":"09:11:58",
     "ActualValue":"30600",
     "UploadedOn":" ",
     "Status":"1",
     "MTDAcheivedValue":0,
     "ActiveStatus":"1",
     "UploadFlag":"1",
     "VisitNumber":"83",
     "BusinessUnit":"MASS",
     "UploadedMethod":" ",
     "RetailerCodeSon":"",
     "Latitude":"6.9294",
     "VisitSequence":"58",
     "Longitude":"79.9038",
     "RetailerType":" ",
     "UploadedBy":" ",
     "CallEndTime":"09:14:41"
  }

この問題をどのように分類できますか?

4

0 に答える 0