发送到 ASP.NET Core Web API 的 JSON 对象内的 JSON 字符串

问题描述 投票:0回答:1

我正在创建一个 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 中?

c# json entity-framework asp.net-core asp.net-core-webapi
1个回答
0
投票

如果我正确理解你的问题 - 那么最简单的选择是将数据作为“双编码 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 转换为字符串。

© www.soinside.com 2019 - 2024. All rights reserved.