【问题标题】:Better way to access the $ref property and parse it's value in JSON.net JsonSchema class访问 $ref 属性并在 JSON.net JsonSchema 类中解析它的值的更好方法
【发布时间】:2014-11-17 20:25:55
【问题描述】:

对于如下所示的 JSON 架构:

JsonSchema propertyJSch = JsonSchema.Parse(
@"{ ""id"" : ""pet"",
   ""properties"" : {
      ""petLicense"" : {
         ""$ref"" : ""#/definitions/petLicense""
      }
   }
}
"
);

我假设这会帮助我获得 $ref 的值:

var petLicValue = propertyJSch.Properties.First().Value;
var petLicValueDict = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(petLicValue.ToString());
var refvalue = petLicValueDict["$ref"];

但这根本不起作用。有没有办法做到这一点? 我假设 JSON.Net 库有办法做到这一点,但事实证明它没有。

【问题讨论】:

    标签: c# json json.net jsonschema


    【解决方案1】:

    这是你应该做的:

    1. 将 json 存储为字符串值

    var json = @"{ ""id"" : ""pet"",
                       ""properties"" : {
                          ""petLicense"" : {
                             ""$ref"" : ""#/definitions/petLicense""
                          }
                       }
                    }";
    1. 使用动态反序列化字符串

    var values = JsonConvert.DeserializeObject&lt;Dictionary&lt;string, dynamic&gt;&gt;(json);
    1. 这是您访问该属性的方式

    var r = values["properties"]["petLicense"]["$ref"];

    希望这会有所帮助!

    【讨论】:

    • 所以你基本上是建议不要使用 JsonSchema 类?
    • 您也可以使用 JsonSchema,但上面的代码可能不起作用。我觉得按照上面所说的那样做是一种更好的方法。另外,如果它适合您,请不要忘记将此标记为答案。 :)
    猜你喜欢
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    相关资源
    最近更新 更多