在 json 消息中,我有一个字段Name
可以有不同特殊字符的各种组合。由于特殊字符,当我过滤此属性时出现错误:
解析路径查询时出现意外字符:!
该属性的值不是固定的。由于事先不知道特殊字符的组合,因此在应用 jpath 过滤属性时,我无法应用特定的转义序列。
例如:如果'Name': ''!!!',
那么$..[?(@Name== '\'!!!')]
将解决问题。但是,相同的字段也可以具有类似的值'Name': 'A!!!'
。在这种情况下,相同的转义序列将失败。
[Test]
public static void Test()
{
string json = @"{'Type': 'Contoso',
'Products': [
{
'Name': ''!!!',
'Price': 99.95
}]
}";
var jobject = JToken.Parse(json);
string name = (string) jobject.SelectToken("$..[?(@Name== ''!!!')]");
}
其他可能的组合Name
是 'Name': '!"!!'
, 'Name': ''"!!'
, 'Name': '$"!!'
等'Name': '/"!!'
'Name': ',!!!'
。是否有一种通用的方法可以以编程方式转义特殊字符,以便我可以处理所有组合?