我已经看到过这样的其他一些问题,但这些是非常复杂的JSON数据,它们在对象中有对象。尽管与我合作的JSON从来都不是静态的,但我怀疑它和那些一样复杂。此外,这是我第一次在C#中使用JSON,所以我有点无能为力。
我想要实现的是分离从我在C#中使用WebRequest提示的API接收的数据。
{
"johhny.debt": {
"id":35187540,
"name":"johnny.debt",
"profileIconId":786,
"Level":30,
"revisionDate":1428019045000
}
}
返回的JSON数据的方式与此类似。
我希望能够以下列方式访问上述字符串的所有属性:
ID:
名称:
~~
~~
~~
......等等。
我假设必须为此制作某种类型的课程?
感谢所有帮助,提前谢谢大家。
答案 0 :(得分:1)
只需创建一个这样的类
public class RootObject
{
public int Id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public int Level { get; set; }
public string revisionDate { get; set; }
}
然后将json.Net和此代码安装到您的main方法
var jsonObject=JsonConvert.DeserializeObject<RootObject>(jsonText);
全部
<强>更新强>
var obj = JObject.Parse(json);
var RootObject = new RootObject()
{
Id = (int)obj["johhny.debt"]["id"],
Level = (int)obj["johhny.debt"]["Level"],
name = (string)obj["johhny.debt"]["name"],
profileIconId = (int)obj["johhny.debt"]["profileIconId"],
revisionDate = (string)obj["johhny.debt"]["revisionDate"]
};
答案 1 :(得分:1)
从Nuget安装Json.Net
Install-Package Newtonsoft.Json
https://www.nuget.org/packages/Newtonsoft.Json/
声明内部对象({"id":..., "name": ... }
)的类:
public class InnerObject
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Username { get; set; }
[JsonProperty("profileIconId")]
public int ProfileIconId { get; set; }
[JsonProperty("level")]
public int Level { get; set; }
[JsonProperty("revisionDate")]
public string RevisionDate { get; set; }
}
如您所见,您可以使用JsonPropertyAttribute
指定从json字段到.Net对象属性的重命名映射。
将你的json读到Dictionary<string,InnerObject>
并获得&#34; johhny.debt&#34;的价值。键:
var dict = JsonConvert.DeserializeObject<Dictionary<string, InnerObject>>(jsonText);
var johhny = dict["johhny.debt"];
或者,如果您需要始终解析完全 json属性&#39; johhny.debt&#39;,您可以创建根对象类:
public class RootObject
{
[JsonProperty("johhny.debt")]
public InnerObject JohhnyDept { get; set; }
}
将其反序列化:
var root = JsonConvert.DeserializeObject<RootObject>(jsonText);
var johhny = root.JohhnyDebt;