我正在创建一个 ASP.NET Core Web API,用于从 SQL 数据库存储和检索数据。一个特定端点将采用 JSON 对象,但是,该特定 JSON 对象将表示 JSON 配置文件的内容。因此,通过线路发送的 JSON 对象将如下所示:
{
"userID": 123,
"jsonFileName" : "aUserConfigFile.json",
"jsonFileData" : " ...some dynamic json string... "
}
其中
jsonFileData
的长度将根据用户选择而动态变化。想象一下一个典型的 JSON 文件,其中包含许多不同的数据位。
调用此 ASP.NET Core Web API 的调用者将是一个 C++ 应用程序。 JSON 对象存储在 SQL 数据库中。
此外,还有另一面,我需要能够将相同的数据返回到调用 C++ 应用程序。
我尝试使用 Swagger 将
jsonFileData
发送到 API,但收到错误的请求错误,所有错误都指向 jsonFileData
字符串。
我想我的问题是:我可以对该字符串使用什么样的文本处理以使其可用于发送到 API 中?
如果我正确理解你的问题 - 那么最简单的选择是将数据作为“双编码 JSON”发送,使用 JSON 转义,因此如下所示:
{
"userID": 123,
"jsonFileName" : "aUserConfigFile.json",
"jsonFileData" : "{\"test\":\"value\", \"test1\":1} "
}
虽然将其作为 JSON 对象放入数据库,但您需要对其进行转义(即双重解析)。
或者您可以在模型中使用 System.Text.Json 中的一些动态选项(如
JsonElement
/JsonNode
等。请参阅如何在 System.Text.Json 中使用 JSON 文档对象模型)表示 jsonFileData
属性并仅在属性中发送“普通”JSON 数据(因此无需双重编码)。
另一个选项可能包括 - 使用 Base64 等编码将“内部”JSON 转换为字符串。