转换Json格式来自webservice的响应

时间:2013-08-07 07:43:22

标签: c# .net json web-services

我的web服务返回json数据,如下所示但我想要的就像在第二个CodeSnipts中一样。我的网络服务和课程如下所示。

         {  "ShowID": 10107,
            "StartTime": "3:00 PM",
            "MovieID": 13,
            "Movie": "Bhaag Milkha Bhaag ",
            "Screen": "CDC SCreen2",
            "MediaPath": "bmb1_568962.jpg"
         },{  "ShowID": 115,
            "StartTime": "6:00 PM",
            "MovieID": 13,
            "Movie": "Bhaag Milkha Bhaag ",
            "Screen": "CDC SCreen2",
            "MediaPath": "bmb1_568962.jpg"
         },{  "ShowID": 110,
            "StartTime": "9:00 PM",
            "MovieID": 13,
            "Movie": "Bhaag Milkha Bhaag ",
            "Screen": "CDC SCreen2",
            "MediaPath": "bmb1_568962.jpg"
         }

但我想要

   {
        "MovieID": 13,
        "Movie": "Bhaag Milkha Bhaag ",
        "Screen": "CDC SCreen2",
        "MediaPath": "bmb1_568962.jpg",
        "ShowInfo": [
            {
                "ShowID": 10107,
                "StartTime": "3:00 PM"
            },
            {
                "ShowID": 115,
                "StartTime": "6:00 PM"
            },
            {
                "ShowID": 110,
                "StartTime": "9:00 PM"
            }
        ]
    }

我的Web服务的c#代码

[WebMethod]
public string NowShowingGetList(DateTime ShowDate)
{
    HomeController obj = new HomeController();

    JavaScriptSerializer js = new JavaScriptSerializer();
    string retJSON = js.Serialize(obj.NowShowingGetList(ShowDate));
    return retJSON;
}

课程为

public class NowShowingInfo
{
    public int ShowID { get; set; }
    public string StartTime { get; set; }
    public int MovieID { get; set; }
    public string Movie { get; set; }
    public string Screen { get; set; }
    public string MediaPath { get; set; }
}

此处obj.NowShowingGetList(ShowDate)返回列表 谢谢你提前。

2 个答案:

答案 0 :(得分:5)

根据实体进行更改

public class NowShowingInfo
{
    public List<ShowInfo> ShowInformation { get; set; }
    public int MovieID { get; set; }
    public string Movie { get; set; }
    public string Screen { get; set; }
    public string MediaPath { get; set; }
}

public class ShowInfo
{
    public int ShowID { get; set; }
    public string StartTime { get; set; }
}

在您的网络服务中进行相关更改

答案 1 :(得分:2)

信息是

 public class ShowInfo
    {
        public int ShowID { get; set; }
        public string StartTime { get; set; }
    }
    public class NowShowing
    {
        public List<ShowInfo> ShowInfo { get; set; }
        public int MovieID { get; set; }
        public string Movie { get; set; }
        public string Screen { get; set; }
        public string MediaPath { get; set; }
    }

public List<NowShowing> NowShowingGetList(DateTime ShowDate)
    {            
        List<NowShowingInfo> objshowList = obj.NowShowingGetList(ShowDate);

        int movieID = 0;
        List<NowShowing> objShowingList = new List<NowShowing>();

        NowShowing obj2 = new NowShowing();
        ShowInfo objshowInfo = new ShowInfo();
        List<ShowInfo> objshowInfoList = new List<ShowInfo>();
        int count = 0;
        string Screen="";
        foreach (NowShowingInfo objs in objshowList)
        {
            if (movieID != objs.MovieID )
            {
                if (count != 0)
                {
                    obj2.ShowInfo = objshowInfoList;
                    objshowInfoList = new List<ShowInfo>();
                    objShowingList.Add(obj2);
                    count = 0;
                }
                obj2 = new NowShowing();
                obj2.MovieID = objs.MovieID;
                obj2.Movie = objs.Movie;
                obj2.Screen = objs.Screen;
                obj2.MediaPath = objs.MediaPath;

                if (count == 0)
                {
                    objshowInfo = new ShowInfo();
                    objshowInfo.ShowID = objs.ShowID;
                    objshowInfo.StartTime = objs.StartTime;
                    objshowInfoList.Add(objshowInfo);
                }

            }
            else
            {
                objshowInfo = new ShowInfo();
                objshowInfo.ShowID = objs.ShowID;
                objshowInfo.StartTime = objs.StartTime;
                objshowInfoList.Add(objshowInfo);
            }
            movieID = objs.MovieID;
            Screen = objs.Screen;
            count++;
        }

        obj2.ShowInfo = objshowInfoList;
        objShowingList.Add(obj2);
        return objShowingList;
    }