簡體   English   中英

解析JSON響應的最簡單方法

[英]Easiest way to parse JSON response

有沒有簡單的方法在c#下面解析JSOn

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

如果有多個結果。

跟着這些步驟:

  1. 使用json2csharp.com將您的JSON轉換為C#;
  2. 創建一個類文件並將上面生成的代碼放在那里;
  3. 使用Nuget Package Manager將Newtonsoft.Json庫添加到項目中;
  4. 使用以下代碼轉換從您的服務收到的JSON:

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

(可以隨意將RootObject重命名為對您更有意義的東西。其他類應保持不變。)

您可以安全地使用內置JavaScriptSerializer而無需引用其他第三方庫:

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

我找到了一種不使用任何外部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 
        }

對我來說......最簡單的方法是使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM