1
我想從文本文件讀取以下示例json到使用JSON.Net解析庫的字符串。JSON正則表達式反序列化與JSON.Net
內容的C:\ TEMP \ regeLib.json
{
"Regular Expressions Library":
{
"SampleRegex":"^(?<FIELD1>\d+)_(?<FIELD2>\d+)_(?<FIELD3>[\w\&-]+)_(?<FIELD4>\w+).txt$"
}
}
示例代碼,試圖解析:
Newtonsoft.Json.Converters.RegexConverter rConv = new Newtonsoft.Json.Converters.RegexConverter();
using (StreamReader reader = File.OpenText(libPath))
{
string foo = reader.ReadToEnd();
JObject jo = JObject.Parse(foo);//<--ERROR
//How to use RegexConverter to parse??
Newtonsoft.Json.JsonTextReader jtr = new Newtonsoft.Json.JsonTextReader(reader);
JObject test = rConv.ReadJson(jtr);//<--Not sure what parameters to provide
string sampleRegex = test.ToString();
}
看來我需要使用轉換器,我知道上面的代碼是錯了,但我找不到任何描述如何/如果可以完成的例子。是否可以使用JSON.Net從文本文件讀取正則表達式標記到字符串?任何幫助表示讚賞。
UPDATE:
發揮它更多,想通了,我不得不逃離字符類,一旦我做出了修正下面我能夠解析到一個JObject和使用LINQ查詢的正則表達式模式。
更正內容C:\ TEMP \ regeLib.json
{
"Regular Expressions Library":
{
"SampleRegex":"^(?<FIELD1>\\d+)_(?<FIELD2>\\d+)_(?<FIELD3>[\\w\\&-]+)_(?<FIELD4>\\w+).txt$"
}
}
更正代碼
using (StreamReader reader = File.OpenText(libPath))
{
string content = reader.ReadToEnd().Trim();
JObject regexLib = JObject.Parse(content);
string sampleRegex = regexLib["Regular Expressions Library"]["SampleRegex"].ToString();
//Which then lets me do the following...
Regex rSampleRegex = new Regex(sampleRegex);
foreach (string sampleFilePath in Directory.GetFiles(dirSampleFiles, "*"))
{
filename = Path.GetFileName(sampleFilePath);
if (rSampleRegex.IsMatch(filename))
{
//Do stuff...
}
}
}
不知道這是最好的方法,但它似乎對我的情況下工作。