var data = {
"ApplicationName": "Zadmin",
"KanMainGroupList":
[{
"MainGroupName": "Settings",
"KanSubGroupList": [{
"SubGroupName": "Signatures",
"SubGroupURL": "Common/HHALevelSettings.aspx",
"SubGroupQueryString": "HHA_ID=$HHA_ID$&HHAName=$HHA_Name$",
"KanFeatureSetList":
[{
"FeatureName": "Client Sign pop-up",
"Keywords": "Client,sign"
}],
"KanNanoGroupList": [{
"NanoGroupName": "Nano1",
"NanoGroupURL": "URL1",
"NanoGroupQueryString": "",
"KanFeatureSetList": [
{
"FeatureName": "",
"KeyWords": ""
}
]
}]
}
]
}
]
};
У меня есть документ mon go с данными JSON, как указано выше. Теперь, когда я пытаюсь отправить эти данные через jquery ajax, выдается ошибка «Введен неверный формат» или какая-то синтаксическая ошибка. ajax cal выглядит следующим образом:
$.ajax({
url: 'api/HelpAPI',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(data),
success: function (data) {
console.log(data);
console.log("success");
},
error: function () {
console.log("error");
}
}).done(function () {
})
Контроллер выглядит следующим образом:
[HttpPost]
public void Post([FromBody] string value)
{
//i tried to use FromForm in place or FromBody
//i tried to use object datatype for value and dynamic as well but in object the data
//doesn't come and in dynamic it is very difficult to work upon.
}
Наконец , используя метод ниже я могу получить данные правильно в значение .
[HttpPost]
public void Post([FromBody] KanFeatureHelp value)
{
List<KanMainGroup> mainGrp = new List<KanMainGroup>();
List<KanSubGroup> subgrp = new List<KanSubGroup>();
List<KanNanoGroup> nanogrp = new List<KanNanoGroup>();
List<KanFeatureSet> SubGrpfeatureset = new List<KanFeatureSet>();
List<KanFeatureSet> NanoGrpfeatureset = new List<KanFeatureSet>();
//mainGrp = value.KanMainGroupList;
//subgrp = value.KanMainGroupList;
mainGrp = value.KanMainGroupList;
foreach(var i in mainGrp)
{
subgrp = i.KanSubGroupList;
foreach (var j in subgrp)
{
nanogrp = j.KanNanoGroupList;
SubGrpfeatureset = j.KanFeatureSetList;
foreach (var k in nanogrp)
{
NanoGrpfeatureset = k.KanFeatureSetList;
}
}
}
}
Структура KanFeatureHelp выглядит следующим образом:
namespace WebApplication5.Models
{
public class KanFeatureHelp
{
public string ApplicationName { get; set; }
public List<KanMainGroup> KanMainGroupList { get; set; }
}
public class KanMainGroup
{
public string MainGroupName { get; set; }
public List<KanSubGroup> KanSubGroupList { get; set; }
}
public class KanSubGroup
{
public string SubGroupName { get; set; }
public string SubGroupURL { get; set; }
public string SubGroupQueryString { get; set; }
public List<KanFeatureSet> KanFeatureSetList { get; set; }
public List<KanNanoGroup> KanNanoGroupList { get; set; }
}
public class KanNanoGroup
{
public string NanoGroupName { get; set; }
public string NanoGroupURL { get; set; }
public string NanoGroupQueryString { get; set; }
public List<KanFeatureSet> KanFeatureSetList { get; set; }
}
public class KanFeatureSet
{
public string FeatureName { get; set; }
public string Keywords { get; set; }
}
}
Вопросы:
Что не так с моим вызовом API? Как на самом деле узнать, как настроить тип контента / манипулирование данными для правильной отправки данных? Что делать, если кто-то хочет отправить данные / объект Dynami c? как можно тогда отправить некоторые строковые данные?
Возможно ли, если бы я мог отправить данные в виде строки и затем десериализовать обратно в c# код?
текущая цель состоит в том, чтобы добавить или удалить любые MainGroup / SubGroup / NanoGroup / FeatureName в текущей Jsondata, которые, я считаю, должны будут проходить через данные. Если бы я мог получить некоторую информацию о том, как это сделать, это было бы очень полезно.
В текущем рабочем сценарии единственным уровнем, к которому я могу получить доступ к данным, является значение . KanMainGroupList . После этого он не показывает какой-либо список подгруппы или другие данные. Это неправильная реализация? Должен ли я что-то изменить?
Действительно ценю ваше время и усилия. Большое вам спасибо.