C# 在USQL中创建JObject时从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(

在USQL中,我正在读取csv文件。这是遥测数据,所以csv文件可能有任何错误数据。我正在读取csv文件并在USQL中创建JObject。我想替换json对象所有值中的无效字符,这样我的脚本就不会因为错误数据而失败。我想生成json输出

在创建
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”是坏字符。除非使用正则表达式查找它们,否则系统如何知道您的坏字符是什么?