【发布时间】:2014-10-08 14:34:19
【问题描述】:
我有一个问题,我似乎无法在谷歌上找到任何关于如何解决它的线索。我正在尝试解析 RESTful-api 服务的响应。
[{"account_id":"5401585","history":"84967869|2|03\/30\/2012,84972342|2|03\/30\/2012,85312563|2|04\/02\/2 012,85314831|2|04\/02\/2012,85318847|2|04\/02\/2012,85435388|2|04\/03\/2012,100244102|2|09\/09\/2012,100 245865|2|09\/09\/2012,100249440|2|09\/09\/2012,100251434|2|09\/09\/2012"}]'
我不明白如何像我的模型所说的那样将此响应放入列表中。
基本上,我希望将被“,”分隔的每一行都添加到一个列表中。
我的代码如下所示:
public class MatchHistoryParser
{
public RootObject get()
{
using (var webClient = new System.Net.WebClient())
{
string URL2 = @"api url";
var json = webClient.DownloadString(URL2);
RootObject match = JsonConvert.DeserializeObject<RootObject>(json);
return match;
}
}
}
public class RootObject
{
public string account_id { get; set; }
public string history { get; set; }
public string win_loss_history { get; set; }
}
抛出错误:" 附加信息:无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“HoNEnemy.BL.RootObject”,因为该类型需要 JSON 对象(例如 {"name":"value"})才能正确反序列化。”
【问题讨论】:
-
您需要一个 JSON 解析器,例如 JSON.NET james.newtonking.com/json 或 Microsoft 内置的解析器。或者从 JSON 生成 C# 以了解 JSON 是什么:json2csharp.com
-
该字符串的内容对 JavaScript 是不透明的。一旦你在一个字符串中,它就是一种临时格式。 (也就是说历史)
-
历史记录应该是一个字符串。公共类 RootObject { 公共字符串 account_id { 获取;放; } 公共字符串历史 { 获取;放; } }
-
如果我想遍历历史怎么办?
-
myObject.History.Split(" ").ToList();或者更有可能的是,在您那里的不同分隔符上进行大约 5 次拆分。