如何在c#中访问json.net数组数据



我不能访问所有json数据,它是由json.net反序列化。我如何访问它。当我在控制台中WriteLine时,它是空的。

Account.cs

public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public IList<string> Roles { get; set; }
}

主类

 string json2 = @"{'Accounts' :[{
 'Email': 'james@example.com',
  'Active': true,
  'CreatedDate': '2013-01-20T00:00:00Z',
  'Roles': [
    'User',
    'Admin']
},
{
 'Email': 'james@example.com2',
  'Active': true,
  'CreatedDate': '2013-01-20T00:00:00Z',
  'Roles': [
    'Userz',
    'Adminz'
  ]
}]}";
    List<Account> account = new List<Account>();
    account.Add(JsonConvert.DeserializeObject<Account>(json2));

    // james@example.com
    Console.Write(account[0].Email);

您拥有的JSON字符串不能按您想要的方式解析。试试这个:

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
public class Program
{
    public static void Main()
    {
        string json2 = @"[{
     'Email': 'james@example.com',
      'Active': true,
      'CreatedDate': '2013-01-20T00:00:00Z',
      'Roles': [
        'User',
        'Admin']
    },
    {
     'Email': 'james@example.com2',
      'Active': true,
      'CreatedDate': '2013-01-20T00:00:00Z',
      'Roles': [
        'Userz',
        'Adminz'
      ]
    }]";
    List<Account> account = new List<Account>();
    account.AddRange(JsonConvert.DeserializeObject<List<Account>>(json2));

    // james@example.com
    Console.Write(account[0].Email);
    }
}
public class Account
{
    public string Email { get; set; }
    public bool Active { get; set; }
    public DateTime CreatedDate { get; set; }
    public IList<string> Roles { get; set; }
}

编辑:或者实际上答案@dotnetom提供解决你的问题,如果你没有控制json格式

原因是这里少了一个类:

public class Root
{
    public List<Account> Accounts { get; set; }
}

你需要这个类,因为你的JSON有一个名为Accounts的属性,所以你需要在你的c#代码中也有它,以便成功地反序列化。

然后你用这样的代码反序列化这个对象:

var root = JsonConvert.DeserializeObject<Root>(json2);
// you can access first element by using
Console.Write(root.Accounts[0].Email);    //prints james@example.com

相关内容

  • 没有找到相关文章

最新更新