我有这个字符串
([{"id":"111","name":"Robocop","cover":"3114188e.jpg"},{"id":"222","name":"Eater","cover":"72dpi.jpg"}])
有没有更好的方法转换为Object Collection,现在我的糟糕代码看起来像这样:
var trimer = myString.TrimStart('(', '[').TrimEnd(')', ']');
string[] coll = trimer.Split('{','}');
string content = "";
foreach(string i in coll)
{
if (!string.IsNullOrEmpty(i) && i != "," && i != "")
{
content += i + "\r\n";
}
}
string[] contentData = content.Split(new string[] { "\r\n" }, StringSplitOptions.None);
for (int i = 0; i < contentData.Length - 1; i++)
{
string book = contentData[i].Replace(',','\t').Replace("\"","");
string[] info = book.Split(new string[] { "\t" }, StringSplitOptions.None);
string id = info[0];
string name = info[1];
string cover = info[2];
}
答案 0 :(得分:1)
是。你实际上有一个JSON字符串。您需要删除括号(如果它们实际存在于接收的字符串中),然后您可以正确地反序列化它。此示例使用Json.NET:
public void DeserializeFoo()
{
var json = "[{\"id\":\"111\",\"name\":\"Robocop\",\"cover\":\"3114188e.jpg\"},
{\"id\":\"222\",\"name\":\"Eater\",\"cover\":\"72dpi.jpg\"}]";
var foos = JsonConvert.DeserializeObject<List<Foo>>(json);
foreach (var foo in foos)
{
Console.WriteLine("Id: {0}", foo.Id);
Console.WriteLine("Name: {0}", foo.Name);
Console.WriteLine("Cover: {0}", foo.Cover);
}
}
public class Foo
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("cover")]
public string Cover { get; set; }
}