2015-07-19 412 views
1

我有這個字符串字符串對象集合

([{"id":"111","name":"Robocop","cover":"3114188e.jpg"},{"id":"222","name":"Eater","cover":"72dpi.jpg"}]) 

,並有更好的方式來轉換爲對象集合,病程現在我的蹩腳的代碼如下所示:

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

這是JSON。嘗試搜索「C#解析JSON」。 – CodeCaster

+1

確實,儘管你必須刪除開始和結束括號'()'。 – Glorfindel

+0

正確的Json事實上,只需使用NewtonSoft Json將內容反序列化爲一個對象,即上面字符串中的每個條目的映射 –

回答

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