解析 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我找到了一种无需使用任何外部 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<Message> messages get; set;
不是必需的,简单的 public Message messages get; set;
就可以了。
我只是用json2csharp创建它,写一个示例。以上是关于解析 JSON 响应的最简单方法的主要内容,如果未能解决你的问题,请参考以下文章
将此 XML 数据转换为 JSON 格式的最简单方法 [重复]
在 Swift 中访问 JSON NSDictionary 对象值的简单方法?