Добавление пользовательских объектов в список <объект>

0

У меня проблема, я не могу добавить пользовательские объекты в свой список. Однако, если я добавлю некоторые предопределенные объекты (строки, целые числа...), мой код работает отлично. Это мой класс, который всегда возвращается на все вызовы ajax этому контроллеру, он содержит логическое состояние и список объектов.

    public class returnData
    {
        public bool status { get; set; }
        public List<object> data { get; set; }
    }

Это класс для объекта, который я хочу добавить в этот список:

public class file
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
}

Код, в котором я использую это:

returnData data = new returnData();
...
DriveFile file = JsonConvert.DeserializeObject<DriveFile>(Json);

file f = new file();
if (file.mimeType == "application/vnd.google-apps.folder")
{
    f.Type = "folder";
    f.ID = file.id;
    f.Name = file.title;
    data.data.Add(f);
}

Ошибка, которую я получаю, не имеет никакой полезной информации, поскольку этот код компилируется, и ошибка возникает в журнале Chrome Console при выполнении ajax.

Изображение консоли Google Chrome

Однако, когда я использую эту строку кода

data.data.add("some string");

моя функция будет работать безупречно и вернуть Object, который содержит логическое состояние и список объектов (строки, целые числа).

Итак, вернемся к моему вопросу, как добавить свои объекты в этот список?

EDIT: ошибок на стороне сервера нет, код компилируется и работает нормально, поэтому это, вероятно, некоторая ошибка jquery/ajax.

Это код ajax для моего отладчика:

86    $.ajax({
87  url: $('#url').val(),
88  type: $('#type option:selected').val(),
89  contentType: "application/json; charset=utf-8",
90  dataType: "json",
91  data: $('#data').val(),
92  success: function (result){
93  console.log(result)
94  },
95  error: function (err){
96  console.log(err)
97  }                   
98    });

Вот полный метод, но метод кажется ОК, это ajax или что-то делать с jquery, я думаю.

[OperationContract]
    public returnData listChildren(string folderId)
    {
        returnData data = new returnData();
        List<object> myList= new List<object>();

        bool status = true;
        try
        {
            string Json = Response("https://www.googleapis.com/drive/v2/files/" + folderId + "/children", "GET");
//get the children list
            if (!Json.Contains("error"))
            {
                DriveChildlist list = JsonConvert.DeserializeObject<DriveChildlist>(Json);
                foreach (DriveChildren child in list.items)
                {
                    string uriString = child.childLink;
//get the info for each child in the list
                    Json = Response(uriString, "GET");
                    if (!Json.Contains("error"))
                    {
                        DriveFile file = JsonConvert.DeserializeObject<DriveFile>(Json);
                        file f = new file();
                        if (file.mimeType == "application/vnd.google-apps.folder")
                        {
                            f.Type = "folder";
                            f.ID = file.id;
                            f.Name = file.title;
                            data.data.Add(f);

                        }
                        else if (file.mimeType == "application/myMimeType")
                        {
                            f.Type = "file";
                            f.ID = file.id;
                            f.Name = file.title;
                            data.data.Add(f);

                        }


                    }
                    else
                    {
                        status = false;
                    }

                }

            }
            else
            {
                status = false;
            }
        }
        catch(Exception)
        {
            status = false;
        }
        data.status = status;
        if (!status)
        {

            data.data = null;
//data.data is null if status is false
        }
        return data;
    }
  • 0
    Что за ошибка без полезной информации, которую вы получаете?
  • 0
    Это ссылка на изображение, ничего полезной ссылку
Показать ещё 4 комментария
Теги:

2 ответа

0

Я решил это с помощью Newtonsoft.Json. Я сериализую объект, используя этот код:

string jsondata = JsonConvert.SerializeObject(data);

а затем я вернул сериализованную строку вместо объекта. Похоже, что центр разработки визуальной студии не смог сериализовать мой объект, даже после добавления [Serializable()] в мой класс. Любая информация по этому поводу?

0

Как написано, ваш код С# не будет работать, но будет компилироваться. Он выдает ошибку при вызове ajax и вы никогда не увидите сообщение об ошибке (в зависимости от настройки вашей системы).

Вот правильный код (учитывая ваш фрагмент)

returnData data = new returnData();
data.data = new List<object>();
// rest of your code.
  • 0
    Не работает, я продолжаю получать ту же ошибку, когда я пытаюсь поместить объекты в него. Так как он работает, например, со строками, возможно, ошибка в моем классе файлов?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню