ASP. NET Cored C# Entity - JSON import - PullRequest
       101

ASP. NET Cored C# Entity - JSON import

0 голосов
/ 21 марта 2020

У меня есть строка JSON, которая выглядит следующим образом:

У меня есть строка JSON, которая выглядит следующим образом:

{
    "products":
        {"title1":"description1","title2":"description2","title3":"description3"}, 
    "categories":
        {"1":"cat1","2":"cat2"}
}

Мой класс Model, который похож на таблица базы данных:

public class Product
{
    public int Id { get; set; }  //auto generated identity
    public string Title { get; set; }
    public string Description { get; set; }
}


public class ApplicationProduct : DbContext
{
    public ApplicationProduct(DbContextOptions<ApplicationProduct> options) : base(options)
    {

    }
    public DbSet<Product> Product { get; set; }
}

Как вставить данные JSON в базу данных с помощью Entity Framework.

[Route("import/products")]
public ActionResult ImportProducts()
{
    string jsonData = ""; //will contain the above mentioned JSON data

    //List<Product> products = JsonConvert.DeserializedObject<List<Product>>(jsonData);
    //foreach(var product in products)
    //{
    //  @product.Title.ToString();
    //  @product.Description.ToString();
    //}
}

Я не знаю, как этого добиться в методе контроллера ImportProducts , Любая помощь?

1 Ответ

0 голосов
/ 23 марта 2020

Это нестандартный формат json, вы не можете напрямую десериализовать полученный контент в Список.

Сначала необходимо принять его с типом dynamic, а затем повторно использовать для получения имени и значения.

Попробуйте этот код:

                List<Product> products = new List<Product>();
                string jsonData = "";//your json content
                dynamic DynamicObject = JsonConvert.DeserializeObject<dynamic>(jsonData);
                foreach (var item in DynamicObject.products)
                {
                    Product product = new Product
                    {
                        Description = item.Value,
                        Title = item.Name
                    };
                    _context.Product.Add(product);
                    products.Add(product);
                }
                _context.SaveChanges();
...