Вопрос

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

Значение ответа фрэмсервер - получить веб -сервис, а затем как получить строковое значение JSON, например, «Flag» , «ServicePermission» ??

Affix: Извините, используя C# для этого.

Это было полезно?

Решение

Примечание. Javascriptserializer на самом деле самый медленный сериализатор JSON, который я когда -либо испытывал. Так много мне пришлось удалить его из мои тесты Потому что это занимало слишком долго (> в 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);

Другие советы

    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#, как 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top