Renvoyer Json à partir de la liste générique dans l'API Web

- Je construire ma liste comme ceci:

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;
}

L'aide de cet Objet:

public class SearchFormula
{
    public string Title { get; set; }

    public string Description { get; set; }

    public string Url { get; set; }
}

J'ai commencé à utiliser le IHttpActionResult, en retournant le OK(les résultats); fonction. Je crois que c'est ce qui m'a donné en bas de la confusion de la route. J'avais réussi à envoyé une liste de tableaux, mais cela n'a pas sérialiser la façon dont j'ai pensé qu'il serait.

J'ai essayé de la modifier à ActionResult et a tenté un retour Json(suite) Résultat de la liste.

Je voudrais continuer à utiliser le IhttpActionResult et envoyer les données sérialisées avec la touche OK (). J'ai aussi semble avoir un conflit entre le haut-sérialiseur json et NewtonSoft sérialiseur json.

Que dois-je utiliser. Quelle est la façon la plus simple de juste sérialisation d'une liste générique et le résultat le passage dans le IHttpActionResult OK() la méthode?

J'ai essayé le JavaScriptSerializer mais il renvoie XML pas de 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();

    }
}

Ici est la Json.Net Exemple:

public class SearchController : ApiController
{
    public IHttpActionResult Get(string searchTerm)
    {   
        var jsonResult = JsonConvert.SerializeObject(SearchUtility.SearchData(searchTerm));

        if (jsonResult != null)
        {
            return Ok(jsonResult);
        }
        return NotFound();        
    }
}

J'ai essayé MemoryStream... bla bla bla... rien ne semble comme un propre approche simple et il n'existe pas de sujet pour cette solution spécifique.

Permettez-moi de commencer par cela...

Comment sérialiser une liste Générique en Json?

Comment puis-je envoyer ce résultat à travers le IHttpActionResult?

*Mise à jour*

C'est ce que je suis pour la fabrication en série de Json.Net. MAIS quelque chose est incorrect avec le format... Même Fiddler ne peut pas déterminer qu'il est Json. Ma Tête ressemble à ceci (dans un violon):

Accept: application/json, text/javascript, /; q=0.01

"[{\"title\":\"Lacidofil®\",\"description\":\"Lacidofil® dispose de l'Institut Rosell de Lactobacillus helveticus et Lactobacillus rhamnosus. Ces deux souches ont été largement étudié dans des essais cliniques humains, possèdent un...\",\"url\":\"/products/product-detail.aspx?pid=103\"},{\"title\":\"MedCaps GI™\",\"description\":\"MedCaps GI™ caractéristiques des ingrédients qui sont conçus pour soutenir sur le plan nutritionnel, l'intégrité et la fonction optimale de la muqueuse gastro-intestinale. Enrichis de nutriments tels que la l-glutam...\",\"url\":\"/products/product-detail.aspx?pid=114\"},{\"title\":\"OrganiX™ PhytoFood™\",\"description\":\"OrganiX PhytoFood est une pratique de la poudre de formulation d'apporter des éléments de nutriments pour soutenir un mode de vie sain. Cette formule complète incorpore un mélange novateur de l'organi...\",\"url\":\"/products/product-detail.aspx?pid=271\"},{\"title\":\"Probio Défense™\",\"description\":\"Probio Défense™ est une combinaison optimale de bactéries probiotiques qui prend en charge le système immunitaire.\r\nce produit contient:\r\n\r\nLactobacillus helveticus Rosell-52 (3 milliards)\r\nLactobacillu...\",\"url\":\"/products/product-detail.aspx?pid=102\"},{\"title\":\"ProbioMax Quotidien DF™\",\"description\":\"ProbioMax Quotidien DF™ est un végétarien, produits laitiers et sans gluten, quatre-souche probiotique un total de 30 milliards de CFU† par capsule. Chaque gélule végétale est scellé dans l'azote purgé alu...\",\"url\":\"/products/product-detail.aspx?pid=181\"},{\"title\":\"ProbioMax DF™\",\"description\":\"ProbioMax DF™ est un végétarien, produits laitiers et sans gluten, quatre-souche probiotique total de 100 milliards de CFU† par capsule. Chaque gélule végétale est scellé dans l'azote purgé aluminium...\",\"url\":\"/products/product-detail.aspx?pid=184\"},{\"title\":\"ProbioMax Plus DF™\",\"description\":\"La multitude de sains les avantages obtenus par la personne un supplément de probiotiques souches de bactéries non-pathogènes levure, Saccharomyces boulardii, des immunoglobulines,...\",\"url\":\"/products/product-detail.aspx?pid=185\"},{\"title\":\"Saccharomycin DF™\",\"description\":\"Saccharomycin DF™ est un de lactose, de l'estomac, l'acide–résistant, stable, le brevet Européen en instance de formule contenant de l'ADN-vérifié Saccharomyces boulardii. Ce probiotique levure de soutien...\",\"url\":\"/products/product-detail.aspx?pid=197\"}]"

source d'informationauteur Brett Spencer