Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET核心C#实体-JSON导入_Asp.net Mvc_Asp.net Core_Entity Framework 6_Entity Framework Core - Fatal编程技术网

Asp.net mvc ASP.NET核心C#实体-JSON导入

Asp.net mvc ASP.NET核心C#实体-JSON导入,asp.net-mvc,asp.net-core,entity-framework-6,entity-framework-core,Asp.net Mvc,Asp.net Core,Entity Framework 6,Entity Framework Core,我有一个JSON字符串,如下所示: { "products": {"title1":"description1","title2":"description2","title3":"description3"}, "categories": {"1":"cat1","2":"cat2"} } 我有一个JSON字符串,如下所示: { "products": {"title1":"description1","title2"

我有一个JSON字符串,如下所示:

{
    "products":
        {"title1":"description1","title2":"description2","title3":"description3"}, 
    "categories":
        {"1":"cat1","2":"cat2"}
}
我有一个JSON字符串,如下所示:

{
    "products":
        {"title1":"description1","title2":"description2","title3":"description3"}, 
    "categories":
        {"1":"cat1","2":"cat2"}
}
类似于数据库表的My 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; }
}
公共类产品
{
public int Id{get;set;}//自动生成的标识
公共字符串标题{get;set;}
公共字符串说明{get;set;}
}
公共类ApplicationProduct:DbContext
{
公共应用程序产品(DbContextOptions):基本(选项)
{
}
公共DbSet乘积{get;set;}
}
如何使用实体框架将JSON数据插入数据库中

[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();
    //}
}
[路线(“进口/产品”)]
公共行动结果导入产品()
{
字符串jsonData=”“;//将包含上述JSON数据
//List products=JsonConvert.DeserializedObject(jsonData);
//foreach(产品中的var产品)
//{
//@product.Title.ToString();
//@product.Description.ToString();
//}
}
我不知道如何在控制器方法ImportProducts中实现这一点。
有什么帮助吗?

这是一种非标准json格式,您不能直接将获取的内容反序列化到列表中

您需要首先使用
动态
类型接受它,然后循环使用它以获取名称和值

请尝试以下代码:

                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();
List products=newlist();
字符串jsonData=“”//您的json内容
动态DynamicObject=JsonConvert.DeserializeObject(jsonData);
foreach(DynamicObject.products中的var项)
{
产品=新产品
{
Description=项目值,
Title=项目名称
};
_context.Product.Add(产品);
产品。添加(产品);
}
_SaveChanges();