C# 如何将json文件递归转换为字典<;字符串,动态>;在dotnet核心中
我有一个swagger doc json文件,我想将其转换为 键为属性名和值的C# 如何将json文件递归转换为字典<;字符串,动态>;在dotnet核心中,c#,json,swagger,openapi,C#,Json,Swagger,Openapi,我有一个swagger doc json文件,我想将其转换为 键为属性名和值的Dictionary可以是Dictionary类型的另一个Dictionary,直到值是基元而不是json对象 我从var dic=JSonObject.Parse(“file.json”).Properties().ToDictionary(p=>p.Name,p=>p.Value)开始 当p.Value不是基元类型时,如何递归地测试并将其转换为dictionnary?我刚刚找到了这个包,它已经包含了我想要解析的所有
Dictionary
可以是Dictionary
类型的另一个Dictionary,直到值是基元而不是json对象
我从var dic=JSonObject.Parse(“file.json”).Properties().ToDictionary(p=>p.Name,p=>p.Value)开始代码>
当p.Value不是基元类型时,如何递归地测试并将其转换为dictionnary?我刚刚找到了这个包,它已经包含了我想要解析的所有东西,并像这样使用它
string url = "https://localhost:10155/swagger/v1/swagger.json";
var httpClient = new HttpClient();
var stream = await httpClient.GetStreamAsync(url);
var openApiDocument = new OpenApiStreamReader().Read(stream, out var diagnostic);
return View(openApiDocument);
然后我可以得到树中所有的OpenApiDocument
对象我刚刚找到了这个包,它已经包含了我想要解析的所有东西,并且像这样使用它
string url = "https://localhost:10155/swagger/v1/swagger.json";
var httpClient = new HttpClient();
var stream = await httpClient.GetStreamAsync(url);
var openApiDocument = new OpenApiStreamReader().Read(stream, out var diagnostic);
return View(openApiDocument);
然后我可以得到树中所有的OpenApiDocument
对象试试这个,它比异步概念更健壮
private void GetServiceJSONDocument()
{
Microsoft.OpenApi.Models.OpenApiDocument JsonDoc = new Microsoft.OpenApi.Models.OpenApiDocument();
HttpWebResponse wresponse = GetServiceAPIRequest(false, SiteAPIURL).GetResponse() as HttpWebResponse;
JsonDoc = new OpenApiStreamReader().Read(wresponse.GetResponseStream(), out var diagnostic);
}
private static HttpWebRequest GetServiceAPIRequest(bool isPOST, string atvURL)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(atvURL);
webRequest.ServicePoint.Expect100Continue = false;
webRequest.ContentType = atvURL.ToLower().IndexOf(".json") >= 0 ? "application/json;charset=\"utf-8\"" : "text/xml;charset=\"utf-8\"";
webRequest.Accept = "text/xml";
webRequest.Headers.Add("SOAPAction", ActiveWSDLRequest);
webRequest.Method = !isPOST ? "GET" : "POST";
return webRequest;
}
试试这个,它比异步概念更健壮
private void GetServiceJSONDocument()
{
Microsoft.OpenApi.Models.OpenApiDocument JsonDoc = new Microsoft.OpenApi.Models.OpenApiDocument();
HttpWebResponse wresponse = GetServiceAPIRequest(false, SiteAPIURL).GetResponse() as HttpWebResponse;
JsonDoc = new OpenApiStreamReader().Read(wresponse.GetResponseStream(), out var diagnostic);
}
private static HttpWebRequest GetServiceAPIRequest(bool isPOST, string atvURL)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(atvURL);
webRequest.ServicePoint.Expect100Continue = false;
webRequest.ContentType = atvURL.ToLower().IndexOf(".json") >= 0 ? "application/json;charset=\"utf-8\"" : "text/xml;charset=\"utf-8\"";
webRequest.Accept = "text/xml";
webRequest.Headers.Add("SOAPAction", ActiveWSDLRequest);
webRequest.Method = !isPOST ? "GET" : "POST";
return webRequest;
}
您能否提供文件.json
?json文件不是静态的。它取决于后端。以下是您可以提供的json文件的示例file.json
?json文件不是静态的。它取决于后端。下面是一个json文件的示例