1

我正在尝试使用 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,因为我无法将整个结构加载到内存中。

谢谢

4

1 回答 1

-1

Looks like for properties, jsonReader.Value returns property name, when ToString is called. You can try casting value to something like JsonProperty type and see if it holds a value of the property. I'm not sure what the exact type name is, but you can look it up in the debugger.

于 2013-04-08T14:55:23.443 回答