2014-07-17 2 views
0

Json.net 객체를 가져 와서 json 문자열로 되돌리려면 어떻게해야합니까? 휴식 서비스에서 얻은 json 패킷을 deserialize합니다. 그런 다음 그것을 처리하고 JObject 배열로 끝납니다. 하지만 브라우저로 보내려면 다시 JSON 문자열로 되돌려 야합니다.Json.net을 JSON으로 serialize

나는 일반 객체를 가지고 있다면 난 그냥 JsonConvert.Serialize()를 호출 할 수 있지만 JObjects을 포함하는 JObject, 또는 JArray이있는 경우 즉, 당신은 단순히에 ToString()를 호출 할 수 있습니다 Json.netJObjects

+0

아마도 JsonConvert.Serialize (JObjects.ToString ()) 작동합니까? –

답변

0

에서 작동하지 않는 JObject (또는 JArray) JSON 문자열을 가져옵니다.

JObject jo = new JObject(); 
jo.Add("foo", "bar"); 
jo.Add("fizz", "buzz"); 

JObject jo2 = new JObject(); 
jo2.Add("foo", "baz"); 
jo2.Add("fizz", "bang"); 

JArray ja = new JArray(); 
ja.Add(jo); 
ja.Add(jo2); 

string json = ja.ToString(); 
Console.WriteLine(json); 

결과 JSON 출력 : 예를 들어 당신이 JObjects의 규칙적인 배열이있는 경우

[ 
    { 
    "foo": "bar", 
    "fizz": "buzz" 
    }, 
    { 
    "foo": "baz", 
    "fizz": "bang" 
    } 
] 

, 당신은 JsonConvert.SerializeObject()에 전달할 수 있습니다 : 이것은 정확히 같은 JSON 제공

JObject[] arrayOfJObjects = new JObject[] { jo, jo2 }; 
json = JsonConvert.SerializeObject(arrayOfJObjects, Formatting.Indented); 
Console.WriteLine(json); 

위와 같이 출력하십시오.

JsonConvert.SerializeObject() 또한 하나의 JObject에 잘 작동 :

json = JsonConvert.SerializeObject(jo, Formatting.Indented); 
Console.WriteLine(json); 

출력 :

{ 
    "foo": "bar", 
    "fizz": "buzz" 
} 

편집

난 그냥 질문에 ASP.NET MVC 태그를 나타났습니다.

당신이 다음 아마도이 같은 일을 MVC 컨트롤러 메서드 내 경우 :

return Json(arrayOfJObjects); 

작동하지 않습니다. 이것은 MVC가 JavaScriptSerializer을 사용하기 때문입니다. Json.Net JObjects에 대해 알지 못합니다. 당신이이 경우에해야 할 것은 내가 위에 나열된 방법 중 하나를 사용하여 JSON을 만드는 것입니다, 다음 사용하여 컨트롤러 메소드에서 반환이 같은 Content 방법 :

string json = JsonConvert.SerializeObject(arrayOfJObjects); 

return Content(json, "application/json"); 
+0

asp.net의 최신 버전이''JavaScriptSerializer'' 대신 json.net을 사용하지 않습니까? –

+0

@KyleGobel 웹 API는 Json.Net을 사용하지만 MVC는 이전 버전과의 호환성을 위해 JavaScriptSerializer를 계속 사용합니다. –

관련 문제