解析 JSON 响应的最简单方法

Posted

技术标签:

【中文标题】解析 JSON 响应的最简单方法【英文标题】:Easiest way to parse JSON response 【发布时间】:2016-03-06 17:34:26 【问题描述】:

有没有什么简单的方法可以在c#下面解析JSOn

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

如果有多个结果。

【问题讨论】:

使用 Json.NET 之类的库 这是一种方法Parsing nested json objects with json.net。 This 可能会在使用 Json.NET 时帮助您 你可以参考这个链接类似的问题***.com/questions/6620165/how-can-i-parse-json-with-c How can I parse JSON with C#?的可能重复 【参考方案1】:

按照以下步骤操作:

    使用 json2csharp.com 将您的 JSON 转换为 C#; 创建一个类文件,把上面生成的代码放在那里; 使用 Nuget 包管理器将 Newtonsoft.Json 库添加到您的项目中;

    使用此代码转换从您的服务接收到的 JSON:

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

(请随意将RootObject 重命名为对您更有意义的名称。其他类应保持不变。)

【讨论】:

【参考方案2】:

您可以安全地使用内置的javascriptSerializer,而无需引用其他第三方库:

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

【讨论】:

这对我很有帮助。 DeserializeObject 返回一个 Dictionary 类型的对象。字典中的对象是字符串、对象数组或 Dictionary 的更多对象 IMO 如果您只是做一个简单的解析或者您根本不想使用第三方库,这就是您要走的路。【参考方案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);

【讨论】:

这行不通。 Message 属性具有 json 对象,而不是对象数组。 public List&lt;Message&gt; messages get; set; 不是必需的,简单的 public Message messages get; set; 就可以了。 我只是用json2csharp创建它,写一个示例。

以上是关于解析 JSON 响应的最简单方法的主要内容,如果未能解决你的问题,请参考以下文章

将 Json 转换为 Xml 的最简单方法

将 pcap 转换为 JSON 的最简单方法

将此 XML 数据转换为 JSON 格式的最简单方法 [重复]

在 Swift 中访问 JSON NSDictionary 对象值的简单方法?

有没有一种简单的方法可以在 Android 上展平 json:api 响应?

使用 gin gonic 返回文字 JSON 的最简单方法