2011-01-11 114 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