【发布时间】:2022-01-26 13:35:33
【问题描述】:
我正在尝试通过 C# 代码中的命令行在 JSON 文件上运行 JQ。 必需的参数之一包括空格和引号,因此它本身包含在引号之间。但是,此参数是从另一个包含引号的字符串格式化的:
var jq = ".data[] | select(.name==\"mytest\") | .id == \"adxd\"";
var psi = new ProcessStartInfo
{
FileName = _exe,
Arguments = $"-c \"{jq}\" {_settings.JSONFile}",
};
然而,论据结果是:
-c ".data[] | select(.name=="mytest") | .id == "adxd"" json.json
这当然是错的。 结果应该是:
-c ".data[] | select(.name==\"mytest\") | .id == \"adxd\"" json.json
如何确保使用正确的引号“级别”正确解码参数?
【问题讨论】:
-
This 应该有所帮助,但我正在努力寻找更好的东西。
-
你需要转义\。 ==\\\"我的测试\\\"。
-
我不禁想知道你为什么选择使用 jq 来做这个?
-
我愿意接受@Llama 的其他建议!我谦虚的研究把我带到了stedolan.github.io/jq
-
也许是 .NET 库 JSON.NET?