将json信息保存在windows商店应用程序中的对象中

本文关键字:应用程序 对象 windows json 信息 保存 存在 | 更新日期: 2023-09-27 18:24:11

在一个windows商店应用程序项目中,我从一个Web服务器上得到一个Json,其中包含几个项目,如下所示http://paste2.org/dJP85EOJ(这是一项)

然后我有一个读取json信息的方法,并用该信息创建一个对象

public async Task createMeet(IJsonValue item, List<Meeting> listMeetings)
    {
        Meeting meeting = new Meeting();
        List<MeetingInvitee> invitees = new List<MeetingInvitee>();
        List<MeetingPoint> meetingPoints = new List<MeetingPoint>();
        MeetingsDB MeetForDB = new MeetingsDB();
        GappService gappservice = new GappService();

        try
        {
            JsonObject newMeet;
            JsonObject.TryParse(item.Stringify(), out newMeet);
            if (newMeet.ContainsKey("_id"))
                if (newMeet["_id"].ValueType != JsonValueType.Null)
                {
                    meeting.Id = newMeet["_id"].GetString();
                    MeetForDB.Id = newMeet["_id"].GetString();
                }
            if (newMeet.ContainsKey("name"))
                if (newMeet["name"].ValueType != JsonValueType.Null)
                {
                    meeting.Name = newMeet["name"].GetString();
                    MeetForDB.Name = newMeet["name"].GetString();
                }
            if (newMeet.ContainsKey("description"))
                if (newMeet["description"].ValueType != JsonValueType.Null)
                {
                    meeting.Description = newMeet["description"].GetString();
                    MeetForDB.description = newMeet["description"].GetString();
                }
            if (newMeet.ContainsKey("meetingType"))
                if (newMeet["meetingType"].ValueType != JsonValueType.Null)
                {
                    meeting.MeetingType = newMeet["meetingType"].GetString();
                    MeetForDB.meetingType = newMeet["meetingType"].GetString();
                }
            if (newMeet.ContainsKey("meetingStatus"))
                if (newMeet["meetingStatus"].ValueType != JsonValueType.Null)
                {
                    meeting.Status = newMeet["meetingStatus"].GetString();
                    MeetForDB.meetingStatus = newMeet["meetingStatus"].GetString();
                }
            if (newMeet.ContainsKey("organizer"))
                if (newMeet["organizer"].ValueType != JsonValueType.Null)
                {
                    meeting.Organizer = newMeet["organizer"].GetString();
                    MeetForDB.organizer = newMeet["organizer"].GetString();
                }
            if (newMeet.ContainsKey("alternativeOrganizer"))
                if (newMeet["alternativeOrganizer"].ValueType != JsonValueType.Null)
                {
                    meeting.AlternativeOrganizer = newMeet["alternativeOrganizer"].GetString();
                    MeetForDB.alternativeOrganizer = newMeet["alternativeOrganizer"].GetString();
                }
            if (newMeet.ContainsKey("organization"))
                if (newMeet["organization"].ValueType != JsonValueType.Null)
                {
                    meeting.Organization = newMeet["organization"].GetString();
                    MeetForDB.organization = newMeet["organization"].GetString();
                }
            if (newMeet.ContainsKey("startDate"))
                if (newMeet["startDate"].ValueType != JsonValueType.Null)
                {
                    meeting.StartDate = GetDateTime(newMeet["startDate"].GetNumber());
                    MeetForDB.startDate = newMeet["startDate"].GetNumber();
                }
                ....
}

它是一个很长的方法,里面有一些嵌套的foreach,因此创建最终对象需要几秒钟的时间。

我想知道的是,是否有一种方法可以将json信息直接传递给对象,而不必一次读取一个字段。

将json信息保存在windows商店应用程序中的对象中

通常我会指出类似json.net的东西,但json的复杂性超出了它所能处理的范围。

相反,我希望服务器的返回更少,或者以更容易使用的方式格式化它。其目的是在服务器上的一个位置进行更改可以使所有使用它的人都更快。
如果你不控制服务器,那么你可以考虑创建自己的服务器,位于应用程序和提供内容的服务器之间。是的,这可能会带来额外的开发/维护/运行成本,您将决定这些成本是否值得它们带来的好处(更小、更快的下载;更简单的处理代码;更好的缓存;更快的代码/应用程序;等等…)。