2014-01-27 4 views
6

JsonConvert.SerializeObject()를 사용하여 IEnumerbale 개체를 serialize하는 중입니다. DegreeName \를 "1 \" 는 따옴표로 문자열을 생산하고 난Web API를 사용하는 방법 Json.net 직렬화 된 문자열 객체를 클라이언트에 다시 보냅니 까?

[HttpGet] 
public string GetDegreeCodes(int id) 
{ 
    string result = //output from JsonConvert.SerializeObject(); 
    return result; 
} 

"[{\"DegreeId \ 아래의 코드를 사용하여 해당 문자열을 반환 공간

웹 API 컨트롤러에서

와 문자를 탈출 ": \"고등학교 \ ", \"ImageSrc \ ": \" 학위 \ r \ "}, \"학위 \ ": 2 \ "DegreeName \": \ "Associate \", \ "ImageSrc \": \ " http://bootsnipp.com/apple-touch-icon-114x114-pre \", \ "설명 \": \ " Get Associate"학사", "ImageSrc": \ " http://bootsnipp.com/apple-touch-icon-114x114-pre \", \ "설명 \": \ "\"\ 학사 학위 받기 학위 \ r \ "}, {\"DegreeId \ ": 4, \"DegreeName \ ": \"석사 \ ", \"ImageSrc \ ": \" http://bootsnipp.com/apple-touch-icon-114x114-pre \ ", \"설명 \ " : \ "DegreeName \": \ "Doctrate \", \ "ImageSrc \": \ " http://bootsnipp.com/apple-touch-icon-114x114-pre \", \ " 마스터 받기 학위 \ 설명 \ "\" 얻기 박사 학위 \는 "}]"

이 내 아약스이며 때문에 w 여분의 제대로 JSON을 인식하지 못합니다 래퍼 시세 및 탈출 문자,

$.ajax({ 
     url: "/api/helloservice/getdegreecodes", 
     type: "get", 
     contentType: "application/text", 
     data: { id: 1 } 
    }).done(function (data) { 
     if (data.length > 0) { 

      for (i = 0; i < data.length; i++) { 
       viewEduModel.degreeCodes.push(data[i]); 
      } 

     } 
    }); 
내가 그런 식으로 booksleeve 사용하여 내 레디 스 캐시 서버에서 JSON 로 캐싱하고 있기 때문에 내가 JsonConvert.SerializeObject를 사용할 필요가

내가 재 직렬화 할 필요가 없습니다 및 매번 DB에서 읽습니다. 어떻게 웹 API 컨트롤러를 보내지 마십시오 따옴표와 백 슬래시는? 난 단지는 IEnumerable과 하자 웹 API는 JSON 직렬화을 반환 할 수 있지만, 난 당신이 다음과 같은 수

답변

13

측면 레디 스에 캐시해야합니다 당신은 당신이를 사용하여

[HttpGet] 
public HttpResponseMessage GetDegreeCodes(int id) 
{ 
    StringContent sc = new StringContent("Your JSON content from Redis here"); 
    sc.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 

    HttpResponseMessage resp = new HttpResponseMessage(); 
    resp.Content = sc; 

    return resp; 
} 
+0

당신이 할 필요가 없습니다, 단지 결과를 직접에는 직렬화하지 않습니다. –

+0

OP의 마지막 파라를 읽었습니까? 사용자는 Redis에있는 내용을 Json으로 저장하려고하므로 conent를 다시 serialize하기를 원하지 않습니다. –

+0

@KiranChalla 감사합니다 !!! 효과가있는 –

0

를 호출 할 수 있습니다에게 코드를 통해 webapi.

using (var client = new WebClient()) //WebClient 
 
{ 
 
    string mystring = "";    
 
    client.Headers.Add("Content-Type:application/json"); //Content-Type 
 
    client.Headers.Add("Accept:application/json");      
 
    var dataa = Encoding.UTF8.GetBytes("{\"Username\":\"sdfsd\"}");      
 
    byte[] a = client.UploadData("your API url", "POST",dataa);       
 
    myString = Encoding.UTF8.GetString(a); 
 
    
 
    }