Я строю свой список следующим образом:
public static List<SearchFormula> SearchData(string searchString)
{
var searchResults = new List<SearchFormula>();
SqlDataReader drResults = FormulaUtility.SearchFormulas(searchString);
if ((drResults != null) && (drResults.HasRows))
{
while (drResults.Read())
{
searchResults.Add(new SearchFormula()
{
// id use the GetValue function
Title = drResults.GetString(1),
Description = drResults.GetString(2),
Url = drResults.GetString(3)
// total use the GetValue Function
});
}
}
return searchResults;
}
Использование этого объекта:
public class SearchFormula
{
public string Title { get; set; }
public string Description { get; set; }
public string Url { get; set; }
}
Я начал использовать IHttpActionResult, возвращая OK (результаты); функция. Я считаю, что это то, что заставило меня сбить с толку дорогу. Я успешно отправил ArrayList, но это не сериализовало то, как я думал.
Я попытался изменить его на ActionResult и попытался вернуть Json (result) Результат, являющийся фактическим списком.
Я хотел бы продолжать использовать IhttpActionResult и отправлять сериализованные данные с помощью метода OK(). Кажется, у меня тоже есть конфликт между встроенным json-сериализатором и селекторами NewtonSoft json.
Что я должен использовать. Каков самый простой способ просто сериализации общего списка и передачи результата в метод IHttpActionResult OK()?
Я пробовал JavaScriptSerializer, но он возвращает XML не Json...
public class SearchController : ApiController
{
public IHttpActionResult Get(string searchTerm)
{
var jsonSerialiser = new JavaScriptSerializer();
var jsonResult = jsonSerialiser.Serialize(SearchUtility.SearchData(searchTerm));
if (jsonResult != null)
{
return Ok(jsonResult);
}
return NotFound();
}
}
Вот пример Json.Net:
public class SearchController : ApiController
{
public IHttpActionResult Get(string searchTerm)
{
var jsonResult = JsonConvert.SerializeObject(SearchUtility.SearchData(searchTerm));
if (jsonResult != null)
{
return Ok(jsonResult);
}
return NotFound();
}
}
Я пробовал MemoryStream... бла-бла-бла... ничего не похоже на чистый, простой подход, и нет никакого предмета для этого конкретного решения.
Позвольте мне начать с этого...
Как я могу сериализовать общий список для Json?
Как я могу отправить этот результат через IHttpActionResult?
* Обновление *
Это то, что я получаю для сериализации от Json.Net. НО что-то не так с форматом... Даже Фиддлер не может определить, что это Json. Мой заголовок выглядит так (в Fiddler):
Accept: application/json, text/javascript,/; д = 0,01
"[{\" title\": \" Lacidofil ®\", \" description\": \" Lacidofil® имеет функции Lactobacillus helveticus Institut Rosell и Lactobacillus rhamnosus. Оба эти штамма были широко изучены в клинических испытаниях человека, имеют... \", \" url\": \"/products/product-detail.aspx? Pid = 103\"}, {\" title\": \" MedCaps GI ™\", \" description\": \" MedCaps GI ™ обладает ингредиентами, которые предназначены для обеспечения полноценной и оптимальной функции желудочно-кишечного тракта. Укрепляется питательными веществами, такими как l-глутам...\", \" url\": \"/products/product-detail.aspx? Pid = 114\"}, {\" title\": \" OrganiX ™ PhytoFood ™\", \" description\": \" OrganiX PhytoFood - это удобная порошковая композиция, обеспечивающая основные питательные вещества для поддержания здорового образа жизни. Эта всеобъемлющая формула включает в себя инновационную смесь органических... \", \" url\": \"/products/product-detail.aspx? Pid = 271\"}, {\" title\": \" Пробио обороны ™\", \" description\": \" Пробио Defence ™ "является оптимальной комбинацией пробиотических бактерий, которые поддерживают иммунную систему. Этот продукт содержит:\r\n\r\nLactobacillus helveticus Rosell-52 (3 миллиарда )\r\nLactobacillu...\", \" url\": \"/products/product-detail.aspx? pid = 102\"}, {\" title\": \" ProbioMax Daily DF ™\" , \"description \":\"ProbioMax Daily DF ™ - это вегетарианская, dairy- и безглютеновая пробиотика с четырьмя деформациями, суммарная 30 миллиардов CFU † на капсулу. Каждая вегетарианская капсула запечатана в продувке азотом... \", \" url\": \"/products/product-detail.aspx? Pid = 181\"}, {\" title\": \" ProbioMax DF ™\", \" description\": \" ProbioMax DF ™ - это вегетарианская, dairy- и бесклеточная, четырехфазная пробиотическая суммарная 100 миллиардов КОЕ † на капсулу. Каждая вегетарианская капсула запечатана в алюминий, продутый азотом... \",\url \":\"/products/product-detail.aspx? Pid = 184 \"}, {\ "title \":\"ProbioMax Плюс DF ™\", \" description\": \" Множество полезных преимуществ, достигаемых индивидуальным добавлением пробиотических штаммов бактерий, непатогенных дрожжей, Saccharomyces boulardii, иммуноглобулинов,... \", \" url\": \"/products/product-detail.aspx? pid = 185\"}, {\" title\": \" Saccharomycin DF ™\", \" description\": \" Saccharomycin DF ™ - это лактоза - безрецидивная, устойчивая к кислоте, стабильная европейская патентная формула, содержащая ДНК-подтвержденный Saccharomyces boulardii. Эти пробиотические дрожжи поддерживают... \", \" url\": \"/products/product-detail.aspx? Pid = 197\"}]"