【问题标题】:JsonTextReader (Json.NET)JsonTextReader (Json.NET)
【发布时间】:2013-04-08 14:33:16
【问题描述】:

我正在尝试使用 JsonTextReader 从 JSON 字符串中读取一个类(我需要在流式 pov 中读取,而不将整个结构加载到内存中)。但似乎 JsonTextReader 不适用于数组,或者我做错了什么,因为有些值不是 Read()。

我的代码:

while (jsonReader.Read())
{
    if (jsonReader.Value != null)
        Console.WriteLine("Token: {0}, Value: {1}", jsonReader.TokenType, jsonReader.Value);
    else
        Console.WriteLine("Token: {0}", jsonReader.TokenType);
}

我的 JSON 文件:

{
    "employees": [
        {
            "firstName": "John",
            "lastName": "Doe"
        },
        {
            "firstName": "Anna",
            "lastName": "Smith"
        },
        {
            "firstName": "Peter",
            "lastName": "Jones"
        }
    ]
}

输出:

Token: StartObject
Token: StartArray
Token: StartObject
Token: PropertyName, Value: firstName
Token: PropertyName, Value: lastName
Token: EndObject
Token: StartObject
Token: PropertyName, Value: firstName
Token: PropertyName, Value: lastName
Token: EndObject
Token: StartObject
Token: PropertyName, Value: firstName
Token: PropertyName, Value: lastName
Token: EndObject
Token: EndArray
Token: EndObject

请注意,Jonh、Anna、Doe 等内容不会显示。

知道我该如何解决这个问题吗?我正在避免序列化\反序列化解决方案或 LINQ,因为我无法将整个结构加载到内存中。

谢谢

【问题讨论】:

  • 你需要Deserialize the JSON string ..?你看过下面的JSON .NET Library |看看这个`所以以前的帖子听起来/看起来像你需要的东西stackoverflow.com/questions/2859753/…
  • 它对我来说很好用。完整程序here。输出here。使用 Json.Net v4.5.11、.Net 框架 v4.5。问题中是否缺少一些细节?
  • 布赖恩,你的样本有效,它似乎是“”。我会做更多的测试,但这是一个很好的起点,谢谢。
  • 投票结束这个老问题,因为原始问题无法重现(工作小提琴here)并且帖子从未更新过更多细节。

标签: c# json.net


【解决方案1】:

对于属性,jsonReader.Value 在调用 ToString 时返回属性名称。您可以尝试将 value 转换为 JsonProperty 类型之类的东西,看看它是否包含该属性的值。我不确定确切的类型名称是什么,但您可以在调试器中查找。

【讨论】:

  • 不,不是这样。 Read() 不会遍历元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多