Android 删除特殊字符
我想在Android sqlite和MS SQL server之间进行复制。那一次我想从数据库中获取表值 这是我的JSONAndroid 删除特殊字符,android,wcf,json,Android,Wcf,Json,我想在Android sqlite和MS SQL server之间进行复制。那一次我想从数据库中获取表值 这是我的JSON { "Table1":[ { "BusinessUnit":"MASS", "ProductCode":"SLD0201", "Description":"Lou Difan C.Blue 12"3- Commode", "Description2":"301 0201"
{
"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
}
]
}
在这里JSON描述列值包含“(双引号)。如果我们检查,它显示错误。这是一个无效的JSON
WCF服务我已将数据集转换为JSON。某些表列包含特殊的特许
我是这样转换的:
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";
}
}
公共字符串ConverTableToJson(数据集dsDownloadJson,int currentSplit)
{
StringBuilder Sb=新的StringBuilder();
字符串结果=”;
int start=0;
int end=500;
int-chk=0;
int currentChk=currentspilt;
if(dsDownloadJson.Tables.Count>0)
{
某人附加(“{”);
foreach(dsDownloadJson.Tables中的数据表dt)
{
DataTable dtDownloadJson=dt;
string[]StrDc=新字符串[dtDownloadJson.Columns.Count];
string HeadStr=string.Empty;
double total=dtDownloadJson.Rows.Count;
WriteLine(“--1--”+dtDownloadJson.Rows.Count);
if(dtDownloadJson.Rows.Count<500)
{
end=dtDownloadJson.Rows.Count;
}
如果(chk==0)
{
如果(dtDownloadJson.Rows.Count>500)
{
if((dtDownloadJson.Rows.Count/500)==0)
{
chk=dtDownloadJson.Rows.Count/500;
}
其他的
{
chk=dtDownloadJson.Rows.Count/500+1;
}
}
其他的
{
chk=1;
}
电流chk=1;
}
其他的
{
currentChk=currentChk+1;
start=currentChk*500;
结束=开始+500;
电流chk=chk;
}
Sb.追加(“\”+dtDownloadJson.TableName+“1\”:[”);
如果(dtDownloadJson.Rows.Count>0)
{
for(int i=0;i0)
{
HeadStr=HeadStr.子字符串(0,HeadStr.长度-1);
Console.WriteLine(“--2--”+start);
控制台写入线(“--3--”+结束);
for(int i=start;i1)
{
Sb.追加(“\'Table2\”:[{\'chk\”:“+chk+”,\“currentchk\”:“+currentchk+”}]);
}
其他的
{
Sb.追加(“\'Table2\”:[{\'chk\”:“+chk+”,\“currentchk\”:“+currentchk+”}]);
}
}
//Sb=新的StringBuilder(Sb.ToString().子字符串(0,Sb.ToString().长度-1));
某人附加(“}”);
使某人返回字符串();
}
其他的
{
返回“0”;
}
}
我的问题是删除特殊特许或如何允许特殊字符
请帮助我任何人…您不应该使用StringBuilder将对象转换为JSON字符串。使用库中的JsonConverter类,它会为您处理JSON的序列化/反序列化(包括转义)您不应该使用StringBuilder将对象转换为JSON字符串。请使用库中的JsonConverter类,它会为您处理JSON的序列化/反序列化(包括转义)尝试使用内置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;
}
公共静态字符串序列化(T obj)
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer=新
System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
MemoryStream ms=新的MemoryStream();
serializer.WriteObject(ms,obj);
string retVal=Encoding.Default.GetString(ms.ToArray());
Dispose女士();
返回返回;
}
尝试使用内置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;
}
公共静态字符串序列化(T obj)
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer=新
System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
MemoryStream ms=新的MemoryStream();
serializer.WriteObject(ms,obj);
string retVal=Encoding.Default.GetString(ms.ToArray());
Dispose女士();
返回返回;
}