Я работаю над проектом, который включает автоматизацию вызовов API с использованием определения Swagger. Качаю файл swagger. json. Структура объекта JSON, который мне нужно проанализировать, несовместима. При синтаксическом анализе путей существует список объектов, а в нем есть методы, которые можно использовать для указанного c пути. Я могу получить только путь, используя различные строковые методы, но мой вопрос был в том, есть ли хороший способ проанализировать json, если JSON структурирован таким образом, что у него нет твердого ключа? Вот пример того, что я имею в виду:
{"/user": {
"post": {
"tags": [
"user"
],
"summary": "Create user",
"description": "This can only be done by the logged in user.",
"operationId": "createUser",
"consumes": [
"application/json"
],
"produces": [
"application/json",
"application/xml"
],
"parameters": [
{
"in": "body",
"name": "body",
"description": "Created user object",
"required": true,
"schema": {
"$ref": "#/definitions/User"
}
}
],
"responses": {
"default": {
"description": "successful operation"
}
}
}
}
Если бы я хотел просто проанализировать этот путь и получить объект метода, как бы я мог go об этом, учитывая, что иногда объект будет «постить», а иногда это будет «получить», «положить» и т. д. c в зависимости от того, что допустимо для пути.
JObject jsonResp = swaggerDownload();
JObject paths = (JObject)jsonResp["paths"];
foreach (var i in paths)
{
string pathToString = i.ToString();
var shaveSomethings = pathToString.Substring(1, something.Length - 2);
var pathAndJson = shaveSomethings.Split(new[] { ',' }, 2);
string correctJsonStructure = "{\"" + pathAndJson[0] + "\":" + pathAndJson[1] + "}";
JObject bd = JObject.Parse(correctJsonStructure);
//dynamic pathsTest = JsonConvert.DeserializeObject<dynamic>(correctJsonStructure);
//JObject result = JsonConvert.DeserializeObject<JObject>(correctJsonStructure);
//Console.WriteLine(bd["/user"]);
}