我有以下类的对象列表:

public class Catagory
{
    int catagoryId;
    string catagoryNameHindi;
    string catagoryNameEnglish;
    List<Object> subCatagories;
    public Catagory(int Id, string NameHindi, string NameEng,List<Object> l)
    {
        this.catagoryId = Id;
        this.catagoryNameHindi = NameHindi;
        this.catagoryNameEnglish = NameEng;
        this.subCatagories = l;
    }
}

  public class SubCatagory
{
    int subCatagoryId { get; set; }
    string subCatNameHindi { get; set; }
    string subCatNameEng { get; set; }

    public SubCatagory(int Id, string NameHindi, string NameEng)
    {
        this.subCatagoryId = Id;
        this.subCatNameEng = NameEng;
        this.subCatNameHindi = NameHindi;
    }
}

当我使用Newtonsoft将此列表转换为json字符串时.Json返回空对象array.

  string json=JsonConvert.SerializeObject(list);

我得到以下结果.

[{},{},{},{},{}]

请帮我解决这个问题.

推荐答案

默认情况下,NewtonSoft.Json将仅序列化公共成员,因此请将您的字段设置为公共:

public class Catagory
{
    public int catagoryId;
    public string catagoryNameHindi;
    public string catagoryNameEnglish;
    public List<Object> subCatagories;

    public Catagory(int Id, string NameHindi, string NameEng, List<Object> l)
    {
        this.catagoryId = Id;
        this.catagoryNameHindi = NameHindi;
        this.catagoryNameEnglish = NameEng;
        this.subCatagories = l;
    }
}

Edit:如果出于某种原因,你真的不想公开你的字段,你可以用JsonPropertyAttribute来修饰它们,让它们可以被序列化和反序列化:

[JsonProperty]
int catagoryId;

Asp.net相关问答推荐

在 EF4.1 中正确地从上下文中附加和分离实体

如何使用 SmtpClient.SendAsync 发送带有附件的邮箱?

判断会话是否为空

ASP.NET MVC4 jquery/javascript 包的使用

使用 JSON.NET 解析 json 字符串

使用 NancyFx 的好处?

如何设置 CSS 切换器

如何在 ASP.NET MVC3 中配置区域

如何在 ASP.NET 页面中以编程方式生成 401 错误

跟踪点有什么用途?

我的 asp.net mvc Web 应用程序中的 OutputCache 设置.防止缓存的多种语法

如何在 ASP.NET 中设置下拉列表项?

在资源文件中使用 HTML

如何将我的 DDD 模型中的用户与身份验证用户集成?

盒式磁带包与 MVC4 包

如何使用 ConfigurationManager.AppSettings

ASP.NET 5 (vNext) - 获取配置设置

您可以从 web.config 文件中的其他位置提取 log4net AdoNetAppender 的 connectionString 吗?

我可以在加载事件时从 C# 的 div 标记中动态添加 HTML 吗?

使用 FileUpload Control 获取文件的完整路径