【发布时间】:2015-08-22 09:24:57
【问题描述】:
在转换 json 字符串数据表时,值字段中存在 ,(逗号)值的问题。
实际上我的 json 字符串是[{"BNo":"345","GNo":"3453","FirstName":"fjai","LastName":"ljai","Address":"BARETI,CEVO, 13/2","Telephone":"051682247","BirthDate":"23-Jan-1981","Email":""}]
那请看地址场景"Address":"BARETI,CEVO, 13/2"
它在值字段中有 ,。将字符串转换为数据库时出现错误。这里我使用的代码将 json 字符串转换为数据表
public DataTable JsonStringToDataTbl(string jsonString)
{
DataTable dt = new DataTable();
string[] jsonStringArray = Regex.Split(jsonString.Replace("[", "").Replace("]", ""), "},{");
List<string> ColumnsName = new List<string>();
foreach (string jSA in jsonStringArray)
{
string[] jsonStringData = Regex.Split(jSA.Replace("{", "").Replace("}", ""), ",");
foreach (string ColumnsNameData in jsonStringData)
{
try
{
int idx = ColumnsNameData.IndexOf(":");
string ColumnsNameString = ColumnsNameData.Substring(0, idx - 1).Replace("\"", "");
if (!ColumnsName.Contains(ColumnsNameString))
{
ColumnsName.Add(ColumnsNameString);
}
}
catch (Exception ex)
{
throw new Exception(string.Format("Error Parsing Column Name : {0}", ColumnsNameData));
}
}
break;
}
foreach (string AddColumnName in ColumnsName)
{
dt.Columns.Add(AddColumnName);
}
foreach (string jSA in jsonStringArray)
{
string[] RowData = Regex.Split(jSA.Replace("{", "").Replace("}", ""), ",");
DataRow nr = dt.NewRow();
foreach (string rowData in RowData)
{
try
{
int idx = rowData.IndexOf(":");
string RowColumns = rowData.Substring(0, idx - 1).Replace("\"", "");
string RowDataString = rowData.Substring(idx + 1).Replace("\"", "");
nr[RowColumns] = RowDataString;
}
catch (Exception ex)
{
continue;
}
}
dt.Rows.Add(nr);
}
return dt;
}
代码必须在值字段中省略 , .. 我能做什么
【问题讨论】:
-
为什么不把json转换成对象,然后编辑对象中的属性,然后再转换成数据行?
-
如果你不介意可以说我该怎么做。实际上 wcf Web 服务将 json 字符串作为输出返回...现在我想更改为表格
-
如果我是你,我会看看newtonsoft.com/json,它会为你节省很多时间。它使您可以轻松地将 json 转换为对象并返回 :)
-
或者请告诉我如何从 wcf resfull 服务传递数据表