你好,我迫切需要一些帮助.我有一个json文件,带有一个json对象数组.我无法弄清楚如何将其反序列化为此对象的列表.
我的JSON在文件中采用这种格式 - 它是数千行,这只是一个示例:
[{
"Rk": 1,
"Gcar": 467,
"Gtm": 1,
"Date": "Apr 6",
"Tm": "CLE",
"Where": "@",
"Opp": "HOU",
"Rslt": "L0-2",
"Inngs": "CG",
"PA": 4,
"AB": 4,
"R": 0,
"H": 0,
"Doubles": 0,
"Triples": 0,
"HR": 0,
"RBI": 0,
"BB": 0,
"IBB": 0,
"SO": 0,
"HBP": 0,
"SH": 0,
"SF": 0,
"ROE": 0,
"GDP": 0,
"SB": 0,
"CS": 0,
"BA": 0,
"OBP": 0,
"SLG": 0,
"OPS": 0,
"BOP": 2,
"aLI": 0.93,
"WPA": -0.093,
"RE24": -0.64,
"DFSDK": 0,
"DFSFD": -1,
"Pos": "Doubles"
},
{
"Rk": 2,
"Gcar": 468,
"Gtm": 2,
"Date": "Apr 8",
"Tm": "CLE",
"Where": "@",
"Opp": "HOU",
"Rslt": "W2-0",
"Inngs": "CG",
"PA": 4,
"AB": 4,
"R": 0,
"H": 2,
"Doubles": 0,
"Triples": 0,
"HR": 0,
"RBI": 0,
"BB": 0,
"IBB": 0,
"SO": 0,
"HBP": 0,
"SH": 0,
"SF": 0,
"ROE": 0,
"GDP": 0,
"SB": 0,
"CS": 0,
"BA": 0.25,
"OBP": 0.25,
"SLG": 0.25,
"OPS": 0.5,
"BOP": 3,
"aLI": 0.71,
"WPA": -0.008,
"RE24": -0.2,
"DFSDK": 6,
"DFSFD": 1.5,
"Pos": "Doubles"
}
]
Run Code Online (Sandbox Code Playgroud)
文件中有142个这样的对象.我试图反序列化该对象无济于事.在这一点上,我已经准备好从头开始了,我只是想找到一些方向将这些数据转化为可用的对象?
谢谢.
Alb*_*iro 26
您可以使用Visual Studio 2013,2015从json创建模型类,我做到了,并且我解析了JSON.要使用此功能,您必须在剪贴板中包含JSON/XML,将光标放在.cs文件中,然后使用选项编辑>选择性粘贴>粘贴JSON AS类
查看生成的代码:
public class Rootobject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public int Rk { get; set; }
public int Gcar { get; set; }
public int Gtm { get; set; }
public string Date { get; set; }
public string Tm { get; set; }
public string Where { get; set; }
public string Opp { get; set; }
public string Rslt { get; set; }
public string Inngs { get; set; }
public int PA { get; set; }
public int AB { get; set; }
public int R { get; set; }
public int H { get; set; }
public int Doubles { get; set; }
public int Triples { get; set; }
public int HR { get; set; }
public int RBI { get; set; }
public int BB { get; set; }
public int IBB { get; set; }
public int SO { get; set; }
public int HBP { get; set; }
public int SH { get; set; }
public int SF { get; set; }
public int ROE { get; set; }
public int GDP { get; set; }
public int SB { get; set; }
public int CS { get; set; }
public float BA { get; set; }
public float OBP { get; set; }
public float SLG { get; set; }
public float OPS { get; set; }
public int BOP { get; set; }
public float aLI { get; set; }
public float WPA { get; set; }
public float RE24 { get; set; }
public int DFSDK { get; set; }
public float DFSFD { get; set; }
public string Pos { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在运行时将JSON反序列化为从Visual Studio创建的此对象,您可以使用Newtonsoft.Json,您可以使用nuget使用以下命令安装它:
Install-Package Newtonsoft.Json
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用静态类JsconCovert中的gerenric方法DeserializedObject对其进行反序列化,如下所示:
Rootobject object = JsonConvert.DeserializeObject<Rootobject>(jsonString);
Run Code Online (Sandbox Code Playgroud)
使用 Newtonsoft.JSON 可以非常简单地完成此操作,并且文档中有一个页面介绍了如何反序列化对象。
取自文档页面:
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public IList<string> Roles { get; set; }
}
// code to deserialize from JSON string to a typed object
string json = @"{
'Email': 'james@example.com',
'Active': true,
'CreatedDate': '2013-01-20T00:00:00Z',
'Roles': [
'User',
'Admin'
]
";
Account account = JsonConvert.DeserializeObject<Account>(json);
Console.WriteLine(account.Email);
// james@example.com
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26048 次 |
| 最近记录: |