【问题标题】:Pulling a token/value from JSON without JObject.Parse in C#在 C# 中从没有 JObject.Parse 的 JSON 中提取令牌/值
【发布时间】:2021-11-02 03:07:18
【问题描述】:

所以我将从某个请求中获取 JSON 作为字符串。它的格式如下:

{
    "Name" : "SomeName",
    "Version" : "V0001",
    "Year" : "1999",
    "MoreComplicatedObjects" : {...}
}

这个传入的 JSON 将非常大,我想看看是否可以在不执行 JObject.Parse(string) 的情况下获取名称、版本和年份。我只是有点担心可能不得不解析整个字符串,而我只能得到我需要的东西并完成它。谢谢!

【问题讨论】:

  • 好吧,JObject.Parse 使用 JsonTextReader,所以没有什么可以阻止您自己在较低级别阅读 JSON。
  • 只需使用所需属性创建模型并忽略其他属性,然后解析 json 对象。
  • @Abu 您确定它们实际上在解析器级别被忽略了吗?我通过设置MaxDepth = 1 做了一个最小的测试,即使模型不包含更深的领域,我仍然遇到异常。 New example:模型中没有引用Nested 属性,但仍然抛出异常。我看到这种情况发生的唯一方法是 JSON.NET 是否仍然在内部解析所有这些。
  • @jimonthycricket,能否请您发布完整的 json 对象,包括您要解析的部分。

标签: c# json .net


【解决方案1】:

您可以创建一个仅具有这些属性的类。任何额外的属性都会被忽略

class Foo
{
    public string Name;
    public string Version;
    public string Year;
}
var json = @"
{
    "Name" : "SomeName",
    "Version" : "V0001",
    "Year" : "1999",
    "MoreComplicatedObjects" : {...}
}
";

var fooObject = JsonConvert<Foo>(json);

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    相关资源
    最近更新 更多