字符串到对象集合

时间:2015-07-19 10:26:20

标签: c#

我有这个字符串

([{"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];
}

1 个答案:

答案 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; }
}