Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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
C# 如何将对象中的属性列表转换为对象列表_C#_Asp.net_Arrays_Json_List - Fatal编程技术网

C# 如何将对象中的属性列表转换为对象列表

C# 如何将对象中的属性列表转换为对象列表,c#,asp.net,arrays,json,list,C#,Asp.net,Arrays,Json,List,我有一些Json格式的数据列表,并使用Json.net转换为对象,因此它应该是一个对象列表模型,但我收到了一个包含属性列表的对象模型。怎么了 这里是我的JSON: { "ControleId": [ "59", "60" ], "NameFileCust": [ "Teste", "Tabelas Files" ], "FlagCtb": [ "true" ], "FlagCom": [ "true" ], "F

我有一些Json格式的数据列表,并使用Json.net转换为
对象
,因此它应该是一个对象列表模型,但我收到了一个包含属性列表的对象模型。怎么了

这里是我的JSON:

{
  "ControleId": [
    "59",
    "60"
  ],
  "NameFileCust": [
    "Teste",
    "Tabelas Files"
  ],
  "FlagCtb": [
    "true"
  ],
  "FlagCom": [
    "true"
  ],
  "FlagSite": [
    "true"
  ]
}
  public class RootObject
  {
    public List<int> ControleId { get; set; }
    public List<string> NameFileCust { get; set; }
    public List<bool?> FlagCtb { get; set; }
    public List<bool?> FlagCom { get; set; }
    public List<bool?> FlagSite { get; set; }
  }
public ActionResult UpdateFileDocsListedDocs(FormCollection form) 
    {
      IValueProvider valueProvider = form.ToValueProvider();
      var openAsDic =  new Dictionary<string, object>();
      foreach (string key in form.Keys)
      {
        ValueProviderResult result = valueProvider.GetValue(key);
        object value = result.RawValue;
        openAsDic.Add(key, value);
      }
      var dicToJson = JsonConvert.SerializeObject(openAsDic, 
 Formatting.Indented);
      var jsonToModel = JsonConvert.DeserializeObject<RootObject>(dicToJson);
      var tuple = Tuple.Create(jsonToModel);
      //Tuple<FileDocuments> tuple2 = Tuple.Create(jsonToModel) as 
 FileDocuments;


      var listObject = new List<RootObject>
      {
        new RootObject
        {
          ControleId = jsonToModel.ControleId,
          FlagCtb = jsonToModel.FlagCtb,
          FlagCom = jsonToModel.FlagCom,
          FlagSite = jsonToModel.FlagSite
        },
      };

      var oriSetor = FileViewModel.Instance.FileDados.OriCodigo;
      if (user.Setor == oriSetor)
      {
        foreach (var uploadedDoc in listObject)
        {
          List<RootObject> root = new List<RootObject>();
          root.Add(new RootObject { ControleId = uploadedDoc.ControleId, 
 NameFileCust = uploadedDoc.NameFileCust, FlagCtb = uploadedDoc.FlagCtb, 
 FlagCom = uploadedDoc.FlagCom, FlagSite = uploadedDoc.FlagSite });
          var nullValueCtb = uploadedDoc.FlagCtb == null ? false : true;
          var nullValueCom = uploadedDoc.FlagCtb == null ? false : true;
          var nullValueSite = uploadedDoc.FlagCtb == null ? false : true;

          //_context.UpdateFileIntra(uploadedDoc.ControleId, 
 jsonToModel.NameFileCust.FirstOrDefault(), nullValueCtb, nullValueCom, 
 nullValueSite, user.UserId);
        }

      }
      else
      {
        FileViewModel.Instance.HasError = true;
      }


      return RedirectToAction("GetFile", "File", new { fileCodigo = fileCodigo 
  });
    }
这里我的JSON转换为对象C:

{
  "ControleId": [
    "59",
    "60"
  ],
  "NameFileCust": [
    "Teste",
    "Tabelas Files"
  ],
  "FlagCtb": [
    "true"
  ],
  "FlagCom": [
    "true"
  ],
  "FlagSite": [
    "true"
  ]
}
  public class RootObject
  {
    public List<int> ControleId { get; set; }
    public List<string> NameFileCust { get; set; }
    public List<bool?> FlagCtb { get; set; }
    public List<bool?> FlagCom { get; set; }
    public List<bool?> FlagSite { get; set; }
  }
public ActionResult UpdateFileDocsListedDocs(FormCollection form) 
    {
      IValueProvider valueProvider = form.ToValueProvider();
      var openAsDic =  new Dictionary<string, object>();
      foreach (string key in form.Keys)
      {
        ValueProviderResult result = valueProvider.GetValue(key);
        object value = result.RawValue;
        openAsDic.Add(key, value);
      }
      var dicToJson = JsonConvert.SerializeObject(openAsDic, 
 Formatting.Indented);
      var jsonToModel = JsonConvert.DeserializeObject<RootObject>(dicToJson);
      var tuple = Tuple.Create(jsonToModel);
      //Tuple<FileDocuments> tuple2 = Tuple.Create(jsonToModel) as 
 FileDocuments;


      var listObject = new List<RootObject>
      {
        new RootObject
        {
          ControleId = jsonToModel.ControleId,
          FlagCtb = jsonToModel.FlagCtb,
          FlagCom = jsonToModel.FlagCom,
          FlagSite = jsonToModel.FlagSite
        },
      };

      var oriSetor = FileViewModel.Instance.FileDados.OriCodigo;
      if (user.Setor == oriSetor)
      {
        foreach (var uploadedDoc in listObject)
        {
          List<RootObject> root = new List<RootObject>();
          root.Add(new RootObject { ControleId = uploadedDoc.ControleId, 
 NameFileCust = uploadedDoc.NameFileCust, FlagCtb = uploadedDoc.FlagCtb, 
 FlagCom = uploadedDoc.FlagCom, FlagSite = uploadedDoc.FlagSite });
          var nullValueCtb = uploadedDoc.FlagCtb == null ? false : true;
          var nullValueCom = uploadedDoc.FlagCtb == null ? false : true;
          var nullValueSite = uploadedDoc.FlagCtb == null ? false : true;

          //_context.UpdateFileIntra(uploadedDoc.ControleId, 
 jsonToModel.NameFileCust.FirstOrDefault(), nullValueCtb, nullValueCom, 
 nullValueSite, user.UserId);
        }

      }
      else
      {
        FileViewModel.Instance.HasError = true;
      }


      return RedirectToAction("GetFile", "File", new { fileCodigo = fileCodigo 
  });
    }
完整代码:

{
  "ControleId": [
    "59",
    "60"
  ],
  "NameFileCust": [
    "Teste",
    "Tabelas Files"
  ],
  "FlagCtb": [
    "true"
  ],
  "FlagCom": [
    "true"
  ],
  "FlagSite": [
    "true"
  ]
}
  public class RootObject
  {
    public List<int> ControleId { get; set; }
    public List<string> NameFileCust { get; set; }
    public List<bool?> FlagCtb { get; set; }
    public List<bool?> FlagCom { get; set; }
    public List<bool?> FlagSite { get; set; }
  }
public ActionResult UpdateFileDocsListedDocs(FormCollection form) 
    {
      IValueProvider valueProvider = form.ToValueProvider();
      var openAsDic =  new Dictionary<string, object>();
      foreach (string key in form.Keys)
      {
        ValueProviderResult result = valueProvider.GetValue(key);
        object value = result.RawValue;
        openAsDic.Add(key, value);
      }
      var dicToJson = JsonConvert.SerializeObject(openAsDic, 
 Formatting.Indented);
      var jsonToModel = JsonConvert.DeserializeObject<RootObject>(dicToJson);
      var tuple = Tuple.Create(jsonToModel);
      //Tuple<FileDocuments> tuple2 = Tuple.Create(jsonToModel) as 
 FileDocuments;


      var listObject = new List<RootObject>
      {
        new RootObject
        {
          ControleId = jsonToModel.ControleId,
          FlagCtb = jsonToModel.FlagCtb,
          FlagCom = jsonToModel.FlagCom,
          FlagSite = jsonToModel.FlagSite
        },
      };

      var oriSetor = FileViewModel.Instance.FileDados.OriCodigo;
      if (user.Setor == oriSetor)
      {
        foreach (var uploadedDoc in listObject)
        {
          List<RootObject> root = new List<RootObject>();
          root.Add(new RootObject { ControleId = uploadedDoc.ControleId, 
 NameFileCust = uploadedDoc.NameFileCust, FlagCtb = uploadedDoc.FlagCtb, 
 FlagCom = uploadedDoc.FlagCom, FlagSite = uploadedDoc.FlagSite });
          var nullValueCtb = uploadedDoc.FlagCtb == null ? false : true;
          var nullValueCom = uploadedDoc.FlagCtb == null ? false : true;
          var nullValueSite = uploadedDoc.FlagCtb == null ? false : true;

          //_context.UpdateFileIntra(uploadedDoc.ControleId, 
 jsonToModel.NameFileCust.FirstOrDefault(), nullValueCtb, nullValueCom, 
 nullValueSite, user.UserId);
        }

      }
      else
      {
        FileViewModel.Instance.HasError = true;
      }


      return RedirectToAction("GetFile", "File", new { fileCodigo = fileCodigo 
  });
    }
public ActionResult UpdateFileDocsListedDocs(FormCollection表单)
{
IValueProvider valueProvider=form.ToValueProvider();
var openAsDic=新字典();
foreach(form.Keys中的字符串键)
{
ValueProviderResult=valueProvider.GetValue(键);
对象值=result.RawValue;
openAsDic.Add(键、值);
}
var dicToJson=JsonConvert.SerializeObject(openAsDic,
格式设置(缩进);
var jsonToModel=JsonConvert.DeserializeObject(dicToJson);
var tuple=tuple.Create(jsonToModel);
//Tuple tuple2=Tuple.Create(jsonToModel)为
档案文件;
var listObject=新列表
{
新根对象
{
ControleId=jsonToModel.ControleId,
FlagCtb=jsonToModel.FlagCtb,
FlagCom=jsonToModel.FlagCom,
FlagSite=jsonToModel.FlagSite
},
};
var oriSetor=FileViewModel.Instance.FileDados.OriCodigo;
if(user.Setor==oriSetor)
{
foreach(listObject中的var uploadedDoc)
{
列表根=新列表();
Add(新的RootObject{ControleId=uploadedDoc.ControleId,
NameFileCust=uploadedDoc.NameFileCust,FlagCtb=uploadedDoc.FlagCtb,
FlagCom=uploadedDoc.FlagCom,FlagSite=uploadedDoc.FlagSite});
var nullValueCtb=uploadedDoc.FlagCtb==null?false:true;
var nullValueCom=uploadedDoc.FlagCtb==null?false:true;
var nullValueSite=uploadedDoc.FlagCtb==null?false:true;
//_context.UpdateFileIntra(uploadedDoc.ControleId,
jsonToModel.NameFileCust.FirstOrDefault(),nullValueCtb,nullValueCom,
nullValueSite,user.UserId);
}
}
其他的
{
FileViewModel.Instance.HasError=true;
}
返回RedirectToAction(“GetFile”,“File”,new{fileCodigo=fileCodigo
});
}
遵循“保持简单”的方法,我用一个简单的循环
For
来解决我的问题,而不是
Foreach
。 我迭代了
jsonToModel.ControleId
,因为这是我的ID。 对于
jsonToModel
上存在的每个值,我将其存储在
数据库中。下面我给出了结束代码:

public ActionResult UpdateFileDocsListedDocs(FormCollection form) 
{
  var oriSetor = FileViewModel.Instance.FileDados.OriCodigo;
  IValueProvider valueProvider = form.ToValueProvider();
  var openAsDic =  new Dictionary<string, object>();
  foreach (string key in form.Keys)
  {
    ValueProviderResult result = valueProvider.GetValue(key);
    object value = result.RawValue;
    openAsDic.Add(key, value);
  }
  var dicToJson = JsonConvert.SerializeObject(openAsDic, Formatting.Indented);
  var jsonToModel = JsonConvert.DeserializeObject<RootObject>(dicToJson);

  if (user.Setor == oriSetor)
  {
    for (int i = 0; i < jsonToModel.ControleId.Count(); i++)
    {
      var buildModelObject = new FileDocuments();
      buildModelObject.ControleId = jsonToModel.ControleId[i];
      buildModelObject.NameFileCust = jsonToModel.NameFileCust[i] == null ? "" : jsonToModel.NameFileCust[i];
      buildModelObject.FlagCtb = jsonToModel.FlagCtb[i];
      buildModelObject.FlagCom = jsonToModel.FlagCom[i];
      buildModelObject.FlagSite = jsonToModel.FlagSite[i];
      _context.UpdateFileIntra(buildModelObject.ControleId, buildModelObject.NameFileCust, buildModelObject.FlagCtb, buildModelObject.FlagCom, buildModelObject.FlagSite, user.UserId);
    }
  }
  else
  {
    FileViewModel.Instance.HasError = true;
  }


  return RedirectToAction("GetFile", "File", new { fileCodigo = fileCodigo });
}
public ActionResult UpdateFileDocsListedDocs(FormCollection表单)
{
var oriSetor=FileViewModel.Instance.FileDados.OriCodigo;
IValueProvider valueProvider=form.ToValueProvider();
var openAsDic=新字典();
foreach(form.Keys中的字符串键)
{
ValueProviderResult=valueProvider.GetValue(键);
对象值=result.RawValue;
openAsDic.Add(键、值);
}
var dicToJson=JsonConvert.serialized对象(openAsDic,Formatting.Indented);
var jsonToModel=JsonConvert.DeserializeObject(dicToJson);
if(user.Setor==oriSetor)
{
对于(int i=0;i
什么是
JsonToObject
?你为什么把它包括在你的问题中?我在你的代码或其他类中没有看到它?我不明白你的问题
JsonToObject
是一个递归数据结构,它只包含一个自身的列表,没有原始字段或属性:
public class JsonToObject{public list DocList{get;set;}}
这真的是你想要的吗,或者你想要一个包含JSON中显示的属性名称的POCO列表,并且每个POCO的值都取自属性值列表吗?抱歉!我已经编辑好了,以便更好地理解。