У меня возникли проблемы с выяснением модели из данных JSON post.MVC5 Model Binding от JSON
JSON:
{
"http://www.xxxx.com/":{
"articulo":[
{
"descripcion":{
"innerHTML":"Newskill Nukite Ratón Gaming MMO/MOBA RGB 16000 DPI",
"nodeName":"SPAN",
"treeDepth":17,
"className":"",
"childNodesLength":1,
"childrenLength":0,
"clientHeight":0,
"parentNodeName":"A",
"parentChildNodeslength":1
},
"img":{
"innerHTML":"",
"nodeName":"IMG",
"treeDepth":17,
"className":"",
"childNodesLength":0,
"childrenLength":0,
"height":210,
"clientHeight":210,
"parentNodeName":"A",
"parentChildNodeslength":3
}
},
{
"comentarios":{
"innerHTML":"(52)",
"nodeName":"SPAN",
"treeDepth":20,
"className":"",
"childNodesLength":1,
"childrenLength":0,
"clientHeight":0,
"parentNodeName":"DIV",
"parentChildNodeslength":15
}
}
]
}
}
Моя модель:
public class GreatClass
{
public IList url { get; set; } = new List<KeyValuePair<string, IList>>();
private IList groups { get; set; } = new List<KeyValuePair<string, IList[]>>();
public IList[] subGroups { get; set; }
private IList metadata { get; set; } = new List<KeyValuePair<string, MetadataJSON>>();
public partial class MetadataJSON
{
public string innerHTML { get; set; }
public string nodeName { get; set; }
public int treeDepth { get; set; }
public string className { get; set; }
public int childNodesLength { get; set; }
public int childrenLength { get; set; }
public Nullable<int> height { get; set; }
public int clientHeight { get; set; }
public string parentNodeName { get; set; }
public int parentChildNodesLength { get; set; }
public string name { get; set; }
}
}
- У меня есть еще сомнения, здесь: я должен удалить
new List<KeyValuePair<string, IList>>();
new List<KeyValuePair<string, IList[]>>();
,= new List<KeyValuePair<string, MetadataJSON>>();
заявления?
Итак, следуя схеме, и снизу вверх:
- У меня есть статические данные, что они будут всегда там - MetadataJSON -.
- У меня есть список со строкой по ключу, где значение MetadataJSON.
- Этот список является элементом массива (articulo), который содержит другие списки.
- Тогда у меня есть другой список со строкой как ключ и массив списков в качестве значения.
- И наконец, у меня есть еще один список со строкой как ключ, содержащий список как значение.
Я немного потерян, потому что я думаю, что моя логическая реализация в порядке, и ошибка, вероятно, связана с поколением JSON.
Конечно, метод моего контроллера:
[HttpPost]
public ActionResult GetJSONData(GreatClass JSONData)
{
if (ModelState.IsValid)
{
return Json(JSONData);
}
else
{
string errorMessage = "<div class=\"validation-summary-errors\">"
+ "The following errors occurred:<ul>";
foreach (var key in ModelState.Keys)
{
var error = ModelState[key].Errors.FirstOrDefault();
if (error != null)
{
errorMessage += "<li class=\"field-validation-error\">"
+ error.ErrorMessage + "</li>";
}
}
errorMessage += "</ul>";
return Json(errorMessage);
}
}
Ответ:
Это не будет следовать структуре, которую я хотел бы сделать. –
Потому что вы назначаете полный объект метаданных прямо к URL-адресу. А как насчет остальных? групп и подгрупп? Извините за 2 комментария, я нажал enter, и он отправил его напрямую. –
Я бы хотел иметь много URL-адресов (в этом случае я написал только «xxx.com»), которые будут содержать много групп (в этом случае я написал только «articulo») и т. Д. –