解析 json 个不确定的数据
Parse json that have uncertain number of data
如何解析 json 具有未知的资产对象?
作为
{
"ClassName": "Excel",
"Teacher": "Esther",
"Student": 50,
"Aircond": 0,
"Assets": {
"Chair": 50,
"Table": 50,
"Fan": 2,
and might be more here and is unknown to me
}
}
您可以使用 dynamic
作为 Assets
类型:
public class RootObject
{
public string ClassName { get; set; }
public string Teacher { get; set; }
public int Student { get; set; }
public int Aircond { get; set; }
public dynamic Assets { get; set; }
}
然后
RootObject ro = JsonConvert.DeserializeObject<RootObject>(json);
如果您确定 Assets
只是一堆具有不同类型值的键,那么您可以使用 IDictionary<string, object>
来存储 Assets
:
public class MyClass
{
public string ClassName { get; set; }
public string Teacher { get; set; }
public int Student { get; set; }
public int Aircond { get; set; }
public IDictionary<string, object> Assets { get; set; }
}
var myClass = JsonConvert.DeserializeObject<MyClass>(json);
如果您只想解析 JSON 而不创建自定义 C# 对象,您可以使用 JObject.Parse.
string json = "{\n\t\"ClassName\": \"Excel\",\n\t\"Teacher\": \"Esther\",\n\t\"Student\": 50,\n\t\"Aircond\": 0,\n\t\"Assets\": {\n\t\t\"Chair\": 50,\n\t\t\"Table\": 50,\n\t\t\"Fan\": 2,\n\t\t\"More\": \"randomText\"\n\t}\n}";
var jObject = JObject.Parse(json);
Console.WriteLine(jObject["Assets"]["More"]);
您将需要 Newtonsoft.Json,您可以从 NuGet 安装它。
如何解析 json 具有未知的资产对象?
作为
{
"ClassName": "Excel",
"Teacher": "Esther",
"Student": 50,
"Aircond": 0,
"Assets": {
"Chair": 50,
"Table": 50,
"Fan": 2,
and might be more here and is unknown to me
}
}
您可以使用 dynamic
作为 Assets
类型:
public class RootObject
{
public string ClassName { get; set; }
public string Teacher { get; set; }
public int Student { get; set; }
public int Aircond { get; set; }
public dynamic Assets { get; set; }
}
然后
RootObject ro = JsonConvert.DeserializeObject<RootObject>(json);
如果您确定 Assets
只是一堆具有不同类型值的键,那么您可以使用 IDictionary<string, object>
来存储 Assets
:
public class MyClass
{
public string ClassName { get; set; }
public string Teacher { get; set; }
public int Student { get; set; }
public int Aircond { get; set; }
public IDictionary<string, object> Assets { get; set; }
}
var myClass = JsonConvert.DeserializeObject<MyClass>(json);
如果您只想解析 JSON 而不创建自定义 C# 对象,您可以使用 JObject.Parse.
string json = "{\n\t\"ClassName\": \"Excel\",\n\t\"Teacher\": \"Esther\",\n\t\"Student\": 50,\n\t\"Aircond\": 0,\n\t\"Assets\": {\n\t\t\"Chair\": 50,\n\t\t\"Table\": 50,\n\t\t\"Fan\": 2,\n\t\t\"More\": \"randomText\"\n\t}\n}";
var jObject = JObject.Parse(json);
Console.WriteLine(jObject["Assets"]["More"]);
您将需要 Newtonsoft.Json,您可以从 NuGet 安装它。