[英]Parsing JSON Using Newtonsoft.Json Without Knowing the Structure
我正在開展一個項目,該項目涉及使用 Swagger 定義自動執行 API 調用。 我下載了 swagger.json 文件。 我需要解析的JSON Object的結構不一致。 解析路徑時,有一個對象列表,然后在其中它們具有可用於該特定路徑的方法。 我可以使用各種字符串方法僅檢索路徑,但我的問題是,如果 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"
}
}
}
}
如果我只想解析該路徑並檢索方法 object 我怎么能 go 考慮到有時 object 將是“發布”,或者有時它將是“允許”的路徑,“ .
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"]);
}
swagger.json 文件應具有端點返回的每個實體的完整定義。 您可以按照如何創建 Rest API 客戶端獲取工作客戶端。
我已經處理了一個 API ,其中響應並不總是符合定義。 我首先將所有響應保存到存儲/日志,然后嘗試反序列化 JSON。 如果出現異常,我會將 go 重新存儲/記錄並查看有什么不同並更新我的代碼以適應更改。 幾次迭代后,沒有新的變化,磨難結束了。
希望有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.