2011-01-11 8 views
3
var responseFromServer = 
    // lines split for readability 
    "{\"flag\":true,\"message\":\"\",\"result\":{\"ServicePermission\":true," 
    + "\"UserGroupPermission\":true}}"; 
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
var responseValue = serializer.DeserializeObject(responseFromServer); 

responseFromServer 값은 웹 서비스를 얻을 수 있으며, 다음과 같은 "플래그", "Servicepermission"??JSON 문자열 값을 가져 오는 방법은 무엇입니까?

접사로 JSON 문자열 값을 얻는 방법 : 미안 해요, C#을 사용하여이 작업을 수행 할 수 있습니다.

답변

5

주를 정의처럼

는 귀하의 케이스를 들어 당신이 수행 할 수 있습니다 JavaScriptSerializer 실제로 내가 벤치마킹 한 느린 JSON 시리얼입니다. 너무 많은 시간이 걸리므로 my benchmarks에서 제거해야했습니다 (> 100 배 느림).

어쨌든이 쉽게 ServiceStack.Text's JSON Serializer를 사용하여 해결이 또한 ServiceStack.Text.JsonSerializer와 함께 일하는 것이 완성도를 들어

var response = JsonSerializer.DeserializeFromString<Dictionary<string,string>>(responseFromServer); 
var permissions = JsonSerializer.DeserializeFromString<Dictionary<string,string>>(response["result"]); 
Console.WriteLine(response["flag"] + ":" + permissions["ServicePermission"]); 

가 :

public class Response 
{ 
    public bool flag { get; set; } 
    public string message { get; set; } 
    public Permisions result { get; set; } 
} 
public class Permisions 
{ 
    public bool ServicePermission { get; set; } 
    public bool UserGroupPermission { get; set; } 
} 

var response = JsonSerializer.DeserializeFromString<Response>(responseFromServer); 
Console.WriteLine(response.flag + ":" + response.result.ServicePermission); 
+0

아주 좋은, 감사합니다 – Net205

+0

+1하지만 JSON Serializer에 대한 링크가 깨졌습니다. 다음은 업데이트 된 URL입니다. https://github.com/ServiceStack/ServiceStack.Text – Andy

-1
if u are using jQuery u can do this 

    var json=jQuery.parseJSON(responseFromServer); 

    //acess 
    alert(json.ServicePermission); 

if you are asing microsoft ajax do this 

var json=Sys.Serialization.JavaScriptSerializer.deserialize(responseFromServer,true); 

    //acess 
    alert(json.ServicePermission); 

(PHP는 C처럼) json을 비행 중에 개체로 변환하는 모든 방법을 발견하지 못했습니다. C#에서 변환하려면 먼저이 클래스를 만들어야합니다. 이

// 클래스

public class Response 
{ 
    public bool flag { get; set; } 
    public string message { get; set; } 
    public Permisions result { get; set; } 
} 
public class Permisions 
{ 
    public bool ServicePermission { get; set; } 
    public bool UserGroupPermission { get; set; } 
} 


     var responseFromServer = 
      // lines split for readability 
    "{\"flag\":true,\"message\":\"\",\"result\":{\"ServicePermission\":true," 
    + "\"UserGroupPermission\":true}}"; 
     var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
     var responseValue = serializer.Deserialize<Response>(responseFromServer); 

    //access  
    responseValue.result.ServicePermission 
+0

미안 해요, C#을 사용하여이 작업을 수행 할 수 있습니다. – Net205

+0

서버 측 코드에서이 작업을 수행하고 있습니까 ?? in C##. –

+0

예, 그렇습니다. 나는 Authentication.ashx와 같은 webservice를 가지고 있으며, default.aspx.cs에서 C#을 사용하여 결과를 얻을 수 있고 json 문자열을 파싱하고 싶다. – Net205

관련 문제