2011-12-05 21 views
0

私はAndroid sqlite & MS SQL serverの間でレプリケーションを行いたいと思います。時間は私がデータベースからテーブルの値を取りたいです。JSONは特殊文字を削除します

は、これは私たちがhttp://jsonformatter.curiousconcept.com/をチェック.IF、それはerror.Its無効なJSONを表示(ダブルクォーテーション)、」JSON説明列の値が含まれている。ここでは私のJSON

 { 
    "Table1":[ 
     { 
     "BusinessUnit":"MASS", 
     "ProductCode":"SLD0201", 
     "Description":"Lou Difan C.Blue 12"3- Commode", 
     "Description2":"301 0201" 

     }, 


     { 
     "BusinessUnit":"MASS", 
     "ProductCode":"SLN0502", 
     "Description":"Lou Napoli I"vory- Cistern", 
     "Description2":"2011 0502" 

     }, 

     { 
     "BusinessUnit":"MASS", 
     "ProductCode":"LDMBL6H", 
     "Description":"Dortek Taper Bullet Handle 6"5 serr ", 
     "Description2":"Taper Bullet Ha" 

     } 

    ], 
    "Table2":[ 
     { 
     "chk":6, 
     "currentchk":1 
     } 
    ] 
} 

です。私は

WCFサービスを持っていますJSONにDataSetを変換するいくつかのテーブルの列には、特別なチャーターを含ん

私はこのような変換:。。

 public String ConverTableToJson(DataSet dsDownloadJson,int currentSplit) 
    { 
     StringBuilder Sb = new StringBuilder(); 
     String result = ""; 
     int start = 0; 
     int end =500; 
     int chk = 0; 
     int currentChk = currentSplit; 
     if (dsDownloadJson.Tables.Count > 0) 
     { 
      Sb.Append("{"); 
      foreach (DataTable dt in dsDownloadJson.Tables) 
      { 
       DataTable dtDownloadJson = dt; 
       string[] StrDc = new string[dtDownloadJson.Columns.Count]; 
       string HeadStr = string.Empty; 
       double total = dtDownloadJson.Rows.Count; 
       Console.WriteLine("--1--" + dtDownloadJson.Rows.Count); 
       if (dtDownloadJson.Rows.Count < 500) 
       { 
        end = dtDownloadJson.Rows.Count; 
       } 

       if (chk == 0) 
       { 
        if (dtDownloadJson.Rows.Count > 500) 
        { 
         if ((dtDownloadJson.Rows.Count/500) == 0) 
         { 
          chk = dtDownloadJson.Rows.Count/500; 
         } 
         else 
         { 
          chk = dtDownloadJson.Rows.Count/500 + 1; 
         } 
        } 
        else 
        { 
         chk = 1; 
        } 
        currentChk = 1; 
       } 
       else 
       { 
        currentChk = currentChk + 1; 
        start = currentChk * 500; 
        end = start + 500; 
        currentChk = chk; 
       } 
       Sb.Append("\"" + dtDownloadJson.TableName + "1\" : ["); 

       if (dtDownloadJson.Rows.Count > 0) 
       { 
        for (int i = 0; i < dtDownloadJson.Columns.Count; i++) 
        { 
         StrDc[i] = dtDownloadJson.Columns[i].Caption; 
         HeadStr += "\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\","; 
        } 

        if (HeadStr.Length > 0) 
        { 
         HeadStr = HeadStr.Substring(0, HeadStr.Length - 1); 
         Console.WriteLine("--2--" + start); 
         Console.WriteLine("--3--" + end); 
         for (int i = start; i < end; i++) 
         { 

          string TempStr = HeadStr; 
          Sb.Append("{"); 
          for (int j = 0; j < dtDownloadJson.Columns.Count; j++) 
          { 
           TempStr = TempStr.Replace(dtDownloadJson.Columns[j] + j.ToString() + "¾", dtDownloadJson.Rows[i][j].ToString()); 
           TempStr = TempStr.Replace(""", '\"'); 
          } 

          Sb.Append(TempStr + "},"); 
         } 

         Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1)); 
        } 

       } 
       else 
       { 

       } 
       Sb.Append("],"); 
       if (chk > 1) 
       { 
        Sb.Append("\"Table2\": [{\"chk\": " + chk + ", \"currentchk\": " + currentChk + " }]"); 
       } 
       else 
       { 
        Sb.Append("\"Table2\": [{\"chk\": " + chk + ", \"currentchk\": " + currentChk + " }]"); 
       } 


      } 
      // Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1)); 
      Sb.Append("}"); 
      return Sb.ToString(); 
     } 
     else 
     { 
      return "0"; 
     } 
    } 

私の問題は、特別なチャーターを削除することです。または、特殊文字を許可する方法です。

あなたはJSONのオブジェクトを文字列に変換することのStringBuilderを使用してはならない...誰

答えて

2

を助けてください。

1

は作り付けのJSONシリアライズに

public static string Serialize<T>(T obj) 

    { 
     System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new 

     System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()); 
     MemoryStream ms = new MemoryStream(); 
     serializer.WriteObject(ms, obj); 
     string retVal = Encoding.Default.GetString(ms.ToArray()); 
     ms.Dispose(); 
     return retVal; 

    } 
を使用しようとする(エスケープを含む) JayRock JSONライブラリにJsonConverterクラスを使用し、それはあなたのための直列化/ Deserialising JSONの世話をします
関連する問題