JsonTextReader (Json.NET)

本文关键字:NET Json JsonTextReader | 更新日期: 2023-09-27 18:08:08

我正在尝试使用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);
}

My JSON file:

{
    "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

请注意,内容像约翰,安娜,Doe,…不显示。

知道我该怎么解决这个问题吗?我避免序列化/反序列化解决方案或LINQ,因为我不能将整个结构加载到内存中。

谢谢

JsonTextReader (Json.NET)

看起来像属性,jsonReader.Value返回属性名称,当ToString被调用。你可以尝试将value转换为JsonProperty类型,看看它是否包含属性的值。我不确定确切的类型名称是什么,但您可以在调试器中查找。