在USQL中创建JObject时,从json的值中删除无效字符
在USQL中,我正在读取csv文件。这是遥测数据,所以csv文件可能有任何不良数据。我正在读取该csv文件并在USQL中创建JObject。我想从所有json对象的值中替换无效字符,这样我的脚本就不会因为错误的数据而失败。我想要生成json输出。在USQL中创建JObject时,从json的值中删除无效字符
我想在创建JObject
之前用空白替换"\\"
和"\""
。请让我知道这是否是删除不良数据的正确方法。如果有人有更好的解决方案,请告诉我。 。
@Data=
SELECT new JObject(
new JProperty("Name", Name),
new JProperty("Description", Description)
).ToString() AS Document
FROM @InputData;
这是我会怎么做呢?这将建立你的数据表,然后 - 也除了“\”和“\”,”我需要删除任何其他的角色我Usql代码下面提到使用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+", "*****");
}
谢谢。是的,我们可以这样做,但想知道所有可能导致问题的坏字符JObject。Ex。\“in”test \“ing”是坏字符 –
系统如何知道你的坏字符是什么,除非你使用正则表达式来找到它们? –
个人而言,我会读的CSV到一个数据表,然后将数据表序列化成一个json对象,通过读入你的数据表,你可以在读取它时验证每个单元格,并使用正则表达式来删除你认为是非法字符的类。如果你想要一个完整的代码示例,我可以使o ne,因为我现在不是直接免费的。 –
我主要是在寻找USQL或C#解决方案 –
你能否提供一些示例数据来分析它以前的样子,以及你希望它看起来如何? – wBob