C# 如何将对象中的属性列表转换为对象列表
我有一些Json格式的数据列表,并使用Json.net转换为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:
{
"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的值都取自属性值列表吗?抱歉!我已经编辑好了,以便更好地理解。