【发布时间】:2017-07-12 04:36:44
【问题描述】:
有没有简单的方法将 Json 字符串转换为 C# 对象?
我有一个 json 格式的 swagger 文件,需要将其转换为 C# 对象
{
"swagger": "2.0",
"info": {
"version": "Profiles",
"title": "Profiles"
},
"paths": {
"/api/Profiles/Get": {
"get": {
"tags": [ "Profiles"],
"operationId": "Profiles_GetById",
"consumes": [],
"produces": [],
"parameters": [{ "name": "id"}]
}
},
"/api/Profiles": {
"get": {
"tags": [
"Profiles"
],
"operationId": "Profiles_GetBySubscriptionid",
"consumes": [],
"produces": [],
"parameters": [{ "name": "subscriptionId"}]
}
}
},
"definitions": {}
}
所以我现在面临的问题是我不知道如何将路径转换为我的 C# 对象的属性。具体来说,我不知道如何为“/api/Profiles/Get”或“/api/Profiles”定义 C# 对象属性。
public class SwaggerObject
{
[JsonProperty("paths")]
public SwaggerPath Paths { get; set;}
}
public class SwaggerPath {
...
}
【问题讨论】:
-
如果你有一个有效的 Json 字符串,我使用了一个 Json 转换器来创建一个 c# 对象。示例:Newtonsoft.Json.JsonConvert.DeserializeObject
(Json); -
Visual Studio 中有一个内置工具可以根据 json 文件生成类。只需复制 json 并在“查看”中的某处找到“将 json 粘贴为类”。如果您想手动执行此操作,您可以尝试将 JsonProperty 与 'api....' 一起使用,但不确定它是否会起作用。另一种方法是将其反序列化为 Dictionary
-
@Mickers 在我的 Parser 类中,我已经使用了 JsonConvert.DeserializeObject
(json)。问题是 Json 格式是名称-值对;因此我不知道应该如何定义 SwaggerPath 中的属性,以便它可以包含“/api/Profiles/Get”或“/api/Profiles”。 -
@MistyK ,内部视觉工作室工具在编辑中而不是在视图中。这实际上非常有用和可爱。我每次都必须访问网站。