0

Visual Studio 2010でC#を使用しており、WCFサービスを作成しています。

[
    {
        "QuizCategory":"Basic Skills",
        "QuizID":["1","2"],
        "QuizShortName":["Career","Beginner"]
    },
    {
        "QuizCategory":"General",
        "QuizID":["3","4"],
        "QuizShortName":["General","General # 2"]
    }
]

上記の結果をjsonresultで取得していますが、辞書ごとの辞書のように、以下の結果のように表示する必要があります。

[
    {
        "QuizCategory":"Basic Skills", 
        Subclasses: 
        [
            {
                "QuizID":1,"QuizShortName":"Career"
            },
            {
                "QuizID":2,
                "QuizShortName":"Beginner"
            }
        ]
    },
    {
        "QuizCategory":"General",      
        Subclasses: 
        [
            {
                "QuizID":3,
                "QuizShortName":"General"
            },
            {
                "QuizID":4,
                "QuizShortName":"General#2"
            }
        ]
    }
] 

StringBuilder jsonResult = new StringBuilder(); リストlstCNAInfo=new List();

        using (RestDataContext dc = new RestDataContext())
        {
            CNAClassInfo objCNAInfo;
            var records = dc.GetCNAClasses(Status);

            foreach (var rec in records)
            {
                ArrayList listQID = new ArrayList();
                ArrayList listQSN = new ArrayList();
                String[] splitQID = rec.QuizId.Split(',');
                String[] splitQSN = rec.QuizShortName.Split('$');
                foreach (var varlist in splitQSN)
                {
                    listQSN.Add(varlist);
                }
                foreach (var varlist in splitQID)
                {
                    listQID.Add(varlist);
                }
                objCNAInfo = new CNAClassInfo();
                objCNAInfo.QuizCategory = rec.QuizCat;
                objCNAInfo.QuizID = listQID;
                objCNAInfo.QuizShortName = listQSN;                                        
                lstCNAInfo.Add(objCNAInfo);
            }
        }
        //Json serialzer
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<CNAClassInfo>));
        MemoryStream ms = new MemoryStream();
        serializer.WriteObject(ms, lstCNAInfo);
        jsonResult.Append(Encoding.Default.GetString(ms.ToArray()));
        ms.Close();
        return jsonResult.ToString();
    }
4

1 に答える 1

0

あなたが示したようにそれが応答をシリアル化している場合、それは単にあなたのクラス構造がどのように見えるかという理由によるものです。

期待される出力を取得したい場合は、構造が次のようになっていることを確認してください。

public class Category
{
    public string QuizCategory {get;set;}
    public List<Subclasses> {get;set;}
}

public class Subclasses
{
     public int QuizID {get;set;}
     public string QuizShortName  {get;set;}

}

そして、それをシリアル化するときはList<Category>、クイズカテゴリごとに1つのCategoryオブジェクトを含むをシリアル化します。

于 2013-02-11T16:39:15.127 に答える