C# 在USQL中创建JObject时从json值中删除无效字符
在USQL中,我正在读取csv文件。这是遥测数据,所以csv文件可能有任何错误数据。我正在读取csv文件并在USQL中创建JObject。我想替换json对象所有值中的无效字符,这样我的脚本就不会因为错误数据而失败。我想生成json输出 在创建C# 在USQL中创建JObject时从json值中删除无效字符,c#,json,json.net,u-sql,C#,Json,Json.net,U Sql,在USQL中,我正在读取csv文件。这是遥测数据,所以csv文件可能有任何错误数据。我正在读取csv文件并在USQL中创建JObject。我想替换json对象所有值中的无效字符,这样我的脚本就不会因为错误数据而失败。我想生成json输出 在创建JObject之前,我想用空格替换“\\\”和“\\”。请告诉我这是否是删除坏数据的正确方法。如果有更好的解决方案,请告诉我。除了“\”和“\”,我还需要删除任何其他字符。下面提到了我的Usql代码- @Data= SELECT new JObject(
JObject
之前,我想用空格替换“\\\”
和“\\”
。请告诉我这是否是删除坏数据的正确方法。如果有更好的解决方案,请告诉我。除了“\”和“\”,我还需要删除任何其他字符。下面提到了我的Usql代码-
@Data=
SELECT new JObject(
new JProperty("Name", Name),
new JProperty("Description", Description)
).ToString() AS Document
FROM @InputData;
我会这样做的。这将建立您的DataTable,然后使用JSON.Net,这将为您序列化所有内容,您只需要构建一个正则表达式来查找并替换您想要删除的内容
void Main()
{
var dt = CSVtoDataTable(@"c:\temp\test.csv");
foreach (DataRow row in dt.Rows)
foreach (DataColumn col in dt.Columns)
{
var str = row[col].ToString();
row[col] = RegexReplace(str);
}
string json = JsonConvert.SerializeObject(dt);
}
public DataTable CSVtoDataTable(string filepath)
{
DataSet ds = new DataSet("Temp");
using (OleDbConnection conn = new OleDbConnection($"Provider=Microsoft.Jet.OleDb.4.0; Data Source = {Path.GetDirectoryName(filepath)}; Extended Properties = \"Text;HDR=YES;FMT=Delimited\""))
{
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + Path.GetFileName(filepath), conn);
adapter.Fill(ds);
}
return ds.Tables[0];
}
public string RegexReplace(string s)
{
return Regex.Replace(s, @"\b[a-z]\w+", "*****");
}
我个人会将csv读入数据表,然后将数据表序列化为json对象。通过将其读入数据表,您可以在读取时验证每个单元格,并使用正则表达式删除非法字符。如果您需要完整的代码示例,我可以很快为您制作一个,因为我现在没有直接的空闲时间。我主要寻找USQL或C#解决方案。您可以提供一些示例数据,说明它以前的样子吗确切地说,您希望它如何处理?如果名称有字符串“test\”ing,那么使用上面的代码将产生解析错误。在这种情况下,我希望从该字符串中删除\”,这可能会导致问题。比如\“我想知道所有其他字符(无效字符)这可能会出现大小写问题,并将其替换为空白。主要是我正在查看所有列的值,例如名称和说明。因为在创建JObject时,我对属性的名称进行了硬编码,所以属性的名称不会有任何问题。我只想验证所有值,并通过将坏字符替换为空白来更正它们。谢谢。是的,我们可以n这样做,但想知道在创建JObject时可能导致问题的所有坏字符。例如,“测试”中的“ing”是坏字符。除非使用正则表达式查找它们,否则系统如何知道您的坏字符是什么?