C# 用C解析JSON对象内部的数组#

C# 用C解析JSON对象内部的数组#,c#,json,C#,Json,我试图解析json对象内部的数组,但它不起作用,下面是代码: public void JsonParserPersonal(string file) { string fullname; string email; var json = System.IO.File.ReadAllText(file); var objects = JObject.Parse(json);

我试图解析json对象内部的数组,但它不起作用,下面是代码:

public void JsonParserPersonal(string file)
        {
            string fullname;
            string email;

            var json = System.IO.File.ReadAllText(file);
            var objects = JObject.Parse(json);
            var arrays = JArray.FromObject(json);

            fullname = (string)objects["NameComponents"]["FullName"];
            email = (string)arrays["EmailAddresses"]["ItemValue"];
            SearchReplacePersonal(fullname, email);
        }
以下是JSON数据:

{
    "NameComponents": {
        "FullName": "XXX"
    },
    "EmailAddresses": [
        {
            "IsPersonal": true,
            "IsBusiness": false,
            "FieldName": "Email1Address",
            "DisplayTitle": "Email",
            "ItemValue": "xxx@yyy.com"
        }
    ]
}
我只想在“EmailAddresses”中获取“ItemValue”。 当我运行此代码时,得到的错误如下:

System.ArgumentException:'对象序列化为字符串。需要JArray实例。“

我正在使用VisualStudio2019


谢谢

访问
JArray
时,您应该指定
索引

var objects = JObject.Parse(json);
var jarray = objects["EmailAddresses"];

Console.WriteLine((string)objects["NameComponents"]["FullName"]);
Console.WriteLine((string)jarray[0]["ItemValue"]);
或者迭代
JArray

foreach(var item in jarray)
{
    foreach(JProperty property in item.Children())
    {
        Console.WriteLine($"{property.Name} - {property.Value}");
    }                
}

访问
JArray
时,应指定
索引

var objects = JObject.Parse(json);
var jarray = objects["EmailAddresses"];

Console.WriteLine((string)objects["NameComponents"]["FullName"]);
Console.WriteLine((string)jarray[0]["ItemValue"]);
或者迭代
JArray

foreach(var item in jarray)
{
    foreach(JProperty property in item.Children())
    {
        Console.WriteLine($"{property.Name} - {property.Value}");
    }                
}

不需要解析数组-可以是
var jarray=objects[“EmailAddresses”]感谢@stuartd的发现。已经更新了后排列数组是不必要的-可以是
var jarray=objects[“EmailAddresses”]感谢@stuartd的发现。我已经更新了帖子