После десериализации объекта есть дополнительные скобки - PullRequest
0 голосов
/ 31 декабря 2018

Вот мои данные, поступающие из поста AJAX.

string form = "[{\"id\": \"1\", \"name\": \"deneme\"},{\"id\": \"2\", \"name\": \"deneme2\"}]"

Когда я десериализую так:

var data = JsonConvert.DeserializeObject(form);

Объект выглядит так:

{ [{"id": 1, "name": "deneme"},{"id": 2, "name": "deneme2"}] } 

Как я могу решить эту проблему?

Редактировать:

[HttpPost]
        public HttpResponseMessage ImportFromExcel(string form, string controller, string action)
        {
            //form = "[{\"id\": \"1\", \"name\": \"deneme\"},{\"id\": \"2\", \"name\": \"deneme2\"}]"
            ImportObject _importObject = new ImportObject();
            _importObject.SchemaName = controller;
            _importObject.TableName = action;

            var deger = JsonConvert.DeserializeObject(form);
            //deger = { [{"id": 1, "name": "deneme"},{"id": 2, "name": "deneme2"}] } 
            Utility.HttpPostJson(proUtil.GetConfigStr("ApiImportUrl", ""), "Import", JsonConvert.SerializeObject(_importObject));

            return new HttpResponseMessage(HttpStatusCode.Created);
        }

public class ImportObject
{
    public string SchemaName { get; set; }
    public string TableName { get; set; }
    public List<string> DataSet { get; set; }
}

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Решение:

var form = JsonConvert.DeserializeObject<List<object>>(comingData.ToString());
foreach (var item in form)
{
    var cSharpClass = JsonConvert.DeserializeObject<dynamic>(item.ToString());

    foreach (JProperty item2 in cSharpClass)
    {
        Console.WriteLine(item2.Name);
        Console.WriteLine(item2.Value);
    }
}
0 голосов
/ 31 декабря 2018

Таким образом, вы десериализуетесь в объекты JSON.Net вместо использования правильной конкретной структуры классов.Я бы порекомендовал сделать что-то подобное.Сначала создайте класс для хранения ваших данных:

public class FormItem
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Теперь десериализуйте в IEnumerable<FormItem>, например, так:

var data = JsonConvert.DeserializeObject<IEnumerable<FormItem>>(form);

И теперь вы можете проходить через него, как и любой другой перечисляемый:

foreach(var formItem in data)
{
    Console.WriteLine($"Item with id of {formItem.Id} has a name of {formItem.Name}");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...