【问题标题】:Allow backslash on API jSon允许 API json 上的反斜杠
【发布时间】:2021-08-06 08:04:09
【问题描述】:

我只是用 C# .NET Core v5 创建了一个简单的Insert API。
格式如:

{
    groupname: string,
    groupdescription: string,
    filedirectory: string
}

filedirectory 上,我必须输入E:\FilesDirectory\image.png 之类的值

但它向我显示了如下错误:

'U' is an invalid escapable character within a JSON string. The string should be correctly escaped.

U 是我尝试执行 API 的反斜杠后的字符。 E:\Unform\blahblachblah

API 代码:

public async Task<int> InsertUpdateProper(modelGroup modelGroup)
{
    string SP = "sp_insertupdateGroup";
    parameters.AddDynamicParams(modelGroup);
    var result = await mySqlConnection.ExecuteAsync(SP, parameters, commandType: mysp);
    return result;
}

上面会在Controller中调用。

有谁知道如何解决这个问题?
非常感谢。谢谢。

【问题讨论】:

  • 当你说“我必须把值设置为” - 你不能修改它吗?用另一个反斜杠转义反斜杠似乎对我有用。
  • 那么@TimothyG.,这个想法怎么样?它的值是一条路径。我该如何修改它?请告诉我,我不明白。
  • 路径从何而来?它是由您的代码在某处产生的吗?如果是这样,无论发生什么,只需将其设为 E:\\FilesDirectory\\image.png - 您的 POST 正文表示它是一个字符串,而 E:\\FilesDirectory\\image.png 是一个有效字符串。您甚至不必在之后为 IO 操作取消转义它,因为它们接受它作为有效路径,这意味着 Directory.CreateDirectory("E:\\FilesDirectory\\MyDirectory"); 将作为示例工作。
  • 嗨 @TimothyG.,值来自使用我的 API 的前端。所以你的意思是,如果可能的话,前端应该抛出一个修改后的值(双反斜杠)?
  • @TimothyG.,你能发布你的答案吗?所以我可以接受。你的建议会很好。非常感谢。

标签: c# json api .net-core


【解决方案1】:

发送 POST 正文的前端需要使用 \ 正确转义 filedirectory 属性以转义反斜杠:

{
   "filedirectory": "E:\\SomeFolder\\SomePicture.jpg"
}

之后您甚至不必在 API 中为 IO 操作取消转义它,因为它们接受它作为有效路径,这意味着 Directory.CreateDirectory("E:\\FilesDirectory\\MyDirectory"); 将作为示例工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多