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オブジェクトインスタンスを含まない配列の値が割り当てられたプロパティを持つ匿名型を作成しています。

の 1 つのインスタンスを出力しようとしていますMarkUpdateか? その場合、配列を削除し、markInfo クラスをインスタンス化してシリアル化します。

FinalMarksおよびプロパティも作成する必要がありますEvalMarks。これらもパブリックとしてマークされていません。

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();

ただし、期待される出力にはエントリが 1 つしかないため、「期待される出力」は得られませんが、コードでは 2 つのエントリが定義されています。

于 2013-02-16T10:47:47.940 に答える