Pregunta

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

valor responseFromServer es conseguir un servicio web y, a continuación, cómo obtener el valor de la cadena JSON, tales como "bandera", "Servicepermission" ??

afijo:. Lo siento, usando C # para hacer esto

¿Fue útil?

Solución

Note: The JavaScriptSerializer is actually the slowest JSON Serializer I've ever benchmarked. So much so I've had to remove it from my benchmarks because it was taking too long (>100x slower).

Anyway this easily solved using 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"]);

For completeness this would also work with 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);

Otros consejos

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

in c# like php i have'nt seen any method that converts json to object on the fly. To do conversions in c# you must first create a class for this.

For your case you can do like this

//define classes

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top