【发布时间】:2019-12-16 15:27:29
【问题描述】:
我在 Json 中有一些数据列表并被转换为 Object using Json.net,所以它应该是一个对象列表模型,但我收到了一个带有属性列表的对象模型。怎么了。
这是我的 JSON:
{
"ControleId": [
"59",
"60"
],
"NameFileCust": [
"Teste",
"Tabelas Files"
],
"FlagCtb": [
"true"
],
"FlagCom": [
"true"
],
"FlagSite": [
"true"
]
}
这里我的 JSON 转换为 Object C#:
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 class JsonToObject
{
public List<RootObject> DocList { get; set; }
}
public class RootObject
{
public int ControleId { get; set; }
public string NameFileCust { get; set; }
public bool? FlagCtb { get; set; }
public bool? FlagCom { get; set; }
public bool? FlagSite { get; set; }
} var jsonToModel = JsonConvert.DeserializeObject<JsonToObject>(dicToJson);
我试过 convert 做另一个 list, tuple e 等等。
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
},
};
完整代码:
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
});
}
【问题讨论】:
-
什么是
JsonToObject?你为什么把它包括在你的问题中?我在您的代码或其他类中的任何地方都没有看到它?我不明白你的问题 -
JsonToObject是一个递归数据结构,只包含一个自身的列表,没有原始字段或属性:public class JsonToObject { public List<JsonToObject> DocList { get; set; } }这真的是你想要的,还是你想要一个带有JSON 中显示的属性名称,并且每个属性名称的值都取自属性值列表? -
对不起各位!我已经编辑到更好的理解。
标签: c# asp.net arrays json list