내가 이렇게 내 목록을 구축 :반환 JSON은
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;
}
이 Object 사용 :
public class SearchFormula
{
public string Title { get; set; }
public string Description { get; set; }
public string Url { get; set; }
}
내가 OK (결과를) 반환하는 IHttpActionResult을 사용하기 시작을; 기능. 나는 이것이 혼란스러운 길로 나를 시작한 것이라고 생각한다. 나는 ArrayList를 성공적으로 보냈지 만 이것이 생각했던대로 직렬화하지는 못했습니다.
ActionResult로 변경하고 Json (result) 결과를 실제 목록으로 반환하려고 시도했습니다.
계속 IhttpActionResult를 사용하고 OK() 메서드를 사용하여 직렬화 된 데이터를 보내고 싶습니다. 나 또한 내장 된 json serializer와 NewtonSoft json serializer간에 충돌이있는 것 같다.
무엇을 사용해야합니까? 제네릭 목록을 serialize하고 결과를 IHttpActionResult OK() 메서드에 전달하는 가장 간단한 방법은 무엇입니까? 하지 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 예
내가 JavaScriptSerializer을 시도했지만이 XML을 반환 : 나는 MemoryStream을 시도했다
public class SearchController : ApiController
{
public IHttpActionResult Get(string searchTerm)
{
var jsonResult = JsonConvert.SerializeObject(SearchUtility.SearchData(searchTerm));
if (jsonResult != null)
{
return Ok(jsonResult);
}
return NotFound();
}
}
을 ... ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ... 아무것도 깨끗하고 직선적 인 접근 방법처럼 보이지 않으며이 특정 솔루션에 대한 주제가 없습니다.
는
가 어떻게 JSON에 대한 일반 목록을 직렬화 할 수 ... 날이 시작하자?어떻게 결과를 IHttpActionResult를 통해 보낼 수 있습니까?
* 업데이트 *
이 내가 Json.Net에서 직렬화 얻고 것입니다. 그러나 포맷에 문제가 있습니다 ... 심지어 Fiddler도 그것이 Json이라고 판단 할 수 없습니다. 내 머리글은 다음과 같습니다 (Fiddler에서) :
수락 : application/json, text/javascript, /; "\"Lacidofil ® \ "\"설명 \ "\"Lacidofil ® 투트 Rosell ’의 락토 바실러스 헬 베티와 락토 rhamnosus 기능 0.01
"는 [{\"표제 \는 = Q. 이 두 균주는 모두 인간의 임상 시험에서 광범위하게 연구되어 왔으며 ... \ ", \"url \ ": \"/ products/product-detail.aspx? pid = 103 \ "}, {\" ": \"MedCaps GI ™ \ ", \"description \ ": \"MedCaps GI ™은 위장관의 보전성과 최적 기능을 영양 적으로 지원하도록 고안된 재료를 특징으로합니다. l-glutam ... \ ", \"url \ ": \"/ products/product-detail.aspx와 같은 영양소가 풍부합니까?OrganiX PhytoFood는 건강한 생활 습관을 키우는 데 유용한 영양소 인 을 제공하는 편리한 분말 형태입니다. 이 포괄적 인 공식은 혁신적인 유기농 블렌드 인 을 통합합니다. \ ", \"url \ ": \"/ products/product-detail.aspx? pid = 271 \ "}, {\"title \ ": \"Probio Probio Defense ™은 면역계를 지원하는 probiotic bacteria의 최적 조합입니다.이 제품에는 다음이 포함되어 있습니다 : \ r \ nLactobacillus helveticus Rosell-52 (3) ProbioMax Daily DF ™ \ ProbioMax Daily DF ™는 ProbioMax Daily DF ™ 제품입니다. ProbioMax Daily DF ™은 채식주의 자, 낙농가 및 글루텐이없는 4 가지 변형 균주로 총 300 억 CFU의 대장균이다. 캡슐 당. 각 채식 캡슐은 질소 제거 된 알루 (alum)로 봉인되어 있습니다 ... \ "url \": \ "/ products/product-detail.aspx? pid = 181 \"}, {\ "title \": \ "ProbioMax ProbioMax DF ™은 채식주의 자, 낙농가 및 글루텐이없는 4 개의 균주가있는 프로 바이오 틱이며 총 1,000 억 CFU입니다. 캡슐 당. 각 채식 캡슐은 질소 제거 된 알루미늄 ... \ ", url \": \ "/ products/product-detail.aspx? pid = 184 \"}, {\ "title \": \ "ProbioMax "DF ™" "\"설명 \ ": \"박테리아의 probiotic 균주, 비병원성 균주 효모, Saccharomyces boulardii, 면역 글로불린을 보완하여 개별적으로 얻은 많은 건강상의 이익 \ Saccharomycin DF ™은 "url \": \ "/ products/product-detail.aspx? pid = 185 \"} {\ "title \": \ "Saccharomycin DF ™ \", \ " 락토오스가없는 위산 – DNA가 검증 된 Saccharomyces boulardii를 함유 한 내구성이 있고 안정된 유럽 특허 출원 제형. 이 프로 바이오 틱 효모는 ... \ ", \"url \ ": \"/ \/products/product-detail.aspx? pid = 197 \ "}]"
당신이 Json.Net에 봤어? –
그게 문제의 일부 야, 기본값과 newtonsoft 사이에 충돌이 생겼어. –
Web API는 이미 JSON.NET을 기본적으로 사용하고 있다고 생각했습니다. 필자가 작성한 내용에서 HTTP 오류 코드를 반환하려는 경우가 아니라면 항상 객체를 반환합니다. 그렇게하면 클라이언트가 JSON 대신 XML을 사용하려고 할 때 더 이상 할 일이 없습니다. –