2011-01-11 117 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值是獲得一個Web服務,然後如何獲得JSON字符串值,如「旗幟」,「ServicePermission權限」 ??如何獲取JSON字符串值?

詞綴:對不起,使用C#來做到這一點。

回答

5

注:JavaScriptSerializer實際上是最慢的JSON序列我曾經爲基準。所以我必須將它從my benchmarks中刪除,因爲它耗時太長(> 100倍慢)。

反正這很容易使用ServiceStack.Text's JSON Serializer解決:

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

爲了完整,這也將有ServiceStack.Text.JsonSerializer工作:

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

c#like php我還沒有看到任何方法可以將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 2011-01-11 14:08:00

+0

你是否在服務器端代碼上做這個?在C##中。 – 2011-01-11 14:11:16