Comment obtenir JSON Valeur de chaîne?
-
09-10-2019 - |
Question
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);
valeur responseFromServer est d'obtenir un webservice, puis comment obtenir la valeur de chaîne JSON, comme « drapeau », « Servicepermission » ??
affixe. Je suis désolé, en utilisant c # pour faire
La solution
Note: Le JavaScriptSerializer est en fait le plus lent JSON sérialiseur que j'ai jamais benchmarkée. Tant et si bien que j'ai dû le retirer de mes repères parce que il a été trop long (> 100x plus lent).
En tout cas cela facilement résolu en utilisant ServiceStack.Text de:
var response = JsonSerializer.DeserializeFromString<Dictionary<string,string>>(responseFromServer);
var permissions = JsonSerializer.DeserializeFromString<Dictionary<string,string>>(response["result"]);
Console.WriteLine(response["flag"] + ":" + permissions["ServicePermission"]);
Pour être complet, ce serait aussi le travail avec 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);
Autres conseils
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);
dans c # comme php i have'nt vu une méthode qui convertit JSON pour objet à la volée. Pour effectuer des conversions en c #, vous devez d'abord créer un pour cette classe.
Pour votre cas, vous pouvez faire comme ceci
// définir des 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