0

我想在 C# 中使用 json.net 创建一个 json 字符串。但是 json 数组没有像我预期的那样创建。这是我的代码:

  markInfo[] MarkUpdate1=new markInfo[2];
            string jsonString = JsonConvert.SerializeObject(new { MarkUpdate =MarkUpdate1 }, Formatting.Indented);
            return jsonString;

public class markInfo
        {
            List<string> FinalMarks = new List<string>();
            List<string> EvalMarks = new List<string>();
        }

我的预期输出是:

{
    "MarkUpdate":[
        {
        "FinalMarks":[
            {
            }
         ]  
        },
        {               
        "EvalMarks":[
            {

            }
            ]
    }
    ]
}   

但它产生了以下输出:

{
  "MarkUpdate": [
    null,
    null
  ]
}
4

2 回答 2

1

您正在创建一个匿名类型,该类型具有一个MarkUpdate属性,该属性分配了不包含对象实例的数组的值。

您是否要输出 a 的一个实例MarkUpdate?在这种情况下,删除您的数组,实例化您的 markInfo 类并将其序列化。

您还应该使您的FinalMarksEvalMarks属性,它们也没有标记为公开。

string jsonString = 
    JsonConvert.SerializeObject(new MarkInfo(), Formatting.Indented);
return jsonString;

public class MarkInfo
{  
    private List<string> finalMarks;
    private List<string> evalMarks;

    public List<string> FinalMarks
    { 
       get { return this.finalMarks ?? (this.finalMarks = new List<string>()); }
       set { this.finalMarks = value; }        
    }

    public List<string> EvalMarks
    { 
       get { return this.evalMarks ?? (this.evalMarks = new List<string>()); }
       set { this.evalMarks = value; }        
    }
}
于 2013-02-16T10:49:18.663 回答
0

这一行:

markInfo[] MarkUpdate1=new markInfo[2];

...创建一个数组markInfo但不创建实例;两个数组都是空的。所以至少你需要创建它们:

markInfo[] MarkUpdate1=new markInfo[2];
markInfo[0] = new markInfo();
markInfo[1] = new markInfo();

但是,这仍然不会为您提供“预期输出”,因为您的预期输出只有一个条目,但您的代码定义了两个条目。

于 2013-02-16T10:47:47.940 回答