Самый простой способ разобрать ответ JSON

Есть ли простой способ разобрать ниже JSOn в С#

{"type":"text","totalprice":"0.0045","totalgsm":"1","remaincredit":"44.92293","messages": [
{"status":"1","messageid":"234011120530636881","gsm":"923122699633"}
]}

и в случае нескольких результатов.

Ответы

Ответ 1

Выполните следующие действия:

  • Преобразуйте JSON в С# с помощью json2csharp.com;
  • Создайте файл класса и разместите там сгенерированный код;
  • Добавьте библиотеку Newtonsoft.Json в свой проект с помощью диспетчера пакетов Nuget;
  • Преобразуйте JSON, полученный от вашей службы, используя этот код:

     RootObject r = JsonConvert.DeserializeObject<RootObject>(json);
    

(Не переименуйте RootObject в нечто более значимое для вас. Остальные классы должны оставаться без изменений.)

Ответ 2

Вы можете безопасно использовать встроенный JavaScriptSerializer без ссылки на дополнительные сторонние библиотеки:

var ser = new System.Web.Script.Serialization.JavaScriptSerializer();
ser.DeserializeObject(json);

Ответ 3

Я нашел способ получить его без использования внешнего API

        using (var w = new WebClient())
        {
            var json_data = string.Empty;
            string url = "YOUR URL";
            // attempt to download JSON data as a string
            try
            {
                json_data = w.DownloadString(url);
                JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
                var result = jsSerializer.DeserializeObject(json_data);
                Dictionary<string, object> obj2 = new Dictionary<string, object>();
                obj2=(Dictionary<string,object>)(result);

                string val=obj2["KEYNAME"].ToString();
            }
            catch (Exception) { }
            // if string with JSON data is not empty, deserialize it to class and return its instance 
        }

Ответ 4

Для меня... самый простой способ сделать это - использовать JSON.net для десериализации сущности, которая представляет объект, например:

public class Message
{
    public string status { get; set; }
    public string messageid { get; set; }
    public string gsm { get; set; }
}

public class YourRootEntity
{
    public string type { get; set; }
    public string totalprice { get; set; }
    public string totalgsm { get; set; }
    public string remaincredit { get; set; }
    public List<Message> messages { get; set; }
}

И сделайте следующее:

YourRootEntity data JsonConvert.DeserializeObject<YourRootEntity>(jsonStrong);