错误JsonTextReader.ReadAsString()C#使用json.net

错误JsonTextReader.ReadAsString()C#使用json.net,c#,json.net,C#,Json.net,我是Json.net的新用户,由于一条错误消息,我被卡住了。 感谢使用json.net的JsonTextReader,我想读取一个json文件 我的json文件是我的类Person的列表,具有以下属性: 使用StreamReader(或TextReader)阅读时,我没有问题。 我想要的是对JsonTextReader类型的输出有相同的结果 以下是我的一段代码,可以帮助您理解: 我的错误是:myString=reader.ReadAsString(); 其他信息:读取字符串时出错。意外标记:S

我是Json.net的新用户,由于一条错误消息,我被卡住了。 感谢使用json.net的JsonTextReader,我想读取一个json文件 我的json文件是我的类Person的列表,具有以下属性: 使用StreamReader(或TextReader)阅读时,我没有问题。 我想要的是对JsonTextReader类型的输出有相同的结果

以下是我的一段代码,可以帮助您理解:

我的错误是:myString=reader.ReadAsString(); 其他信息:读取字符串时出错。意外标记:StartArray。路径“”,第1行,位置1

我一直在寻找更多的信息,但我发现没有什么可以帮助我

如果你们中有人能帮助我理解这个错误并找到解决方案

以下是我的tr文件内容摘录:

[
    {
        "FirstName": "X",
        "LastName": "Y",
        "Hobbies": "Cuisine",
        "Age": 35,
        "Country": "France",
        "Address": "unknown",
        "Phone": "unknown",
        "Gender": "male"
    },
    {
        "FirstName": "W",
        "LastName": "Z",
        "Hobbies": "Jouer",
        "Age": 43,
        "Country": "France",
        "Address": "unknown",
        "Phone": "unknown",
        "Gender": "male"
    },
    ...

您只需从代码中删除这一行:
string myString=reader.ReadAsString()Json序列化程序尝试读取其中的字符串,但识别出您正在尝试读取的是一个数组

TextReader tr = File.OpenText(path);
List<Person> myPersonList = new List<Person>();
JsonTextReader reader = new JsonTextReader(tr);
JsonSerializer jseri = new JsonSerializer();

object parsedData = jseri.Deserialize(reader);

示例来自Newtonsoft帮助页面,只需使用常规文本读取器读取文件,然后使用JsonConvert反序列化即可

System.IO.TextReader textReader = System.IO.File.OpenText(path);
string all = textReader.ReadToEnd();
m_Elements = JsonConvert.DeserializeObject<MyType>(all);
System.IO.TextReader=System.IO.File.OpenText(路径);
string all=textReader.ReadToEnd();
m_Elements=JsonConvert.DeserializeObject(全部);

我不太清楚-您是否能够对数据进行反序列化,只是无法返回JsonTextReader类型的文本?@jacoblam抱歉,我不清楚。我有一个函数:public override object ReadJson(JsonReader reader,Type objectType,object existingValue,JsonSerializer serializer),我正在尝试获取一个JsonTextReader,以便在我的函数中调用它。我只是想知道我的JsonTextReader的价值,看看是否一切顺利。(因为我是json.net的初学者,谢谢回答!我还有一个关于json.net使用的问题。如果我在做一个:JObject resultMessage=JObject.Load(reader);对于同一个读取器,我还有一个错误其他信息:从JsonReader读取JObject时出错。当前JsonReader项不是对象:EndArray.Path“”,第1行,位置8811。“这就是为什么我想用字符串myString进行测试。以查看我的JsonTextReader的内容。您认为我的第二个错误是因为:Json序列化程序尝试读取字符串,但识别数组(如您所说)。如果是,是否有方法加载(读取器)?请看我的编辑,但这也只会读取一个Json对象,而不是一个对象数组!我会看看你发给我的网站。再次感谢你的准确回答。
JObject o = new JObject
{
    { "Cpu", "Intel" },
    { "Memory", 32 },
    {
        "Drives", new JArray
        {
            "DVD",
            "SSD"
        }
    }
};

JsonReader reader = o.CreateReader();
while (reader.Read())
{
    Console.Write(reader.TokenType);
    if (reader.Value != null)
        Console.Write(" - " + reader.Value);

    Console.WriteLine();
}
System.IO.TextReader textReader = System.IO.File.OpenText(path);
string all = textReader.ReadToEnd();
m_Elements = JsonConvert.DeserializeObject<MyType>(all);