2015-05-05 71 views
-2

我想將JSON字符串解析到我的類對象中。你能告訴我我在這裏做錯了什麼嗎?獲取JSON字符串的數組

public class Users 
{ 
    public List<SteamUser> data { get; set; } 
} 

public class SteamUser 
{ 
    public string id { get; set; } 
    public string[] weapons { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var return_value = "{"user":"76561198005159244","items":["41750778","25316150"]}{"user":"76561198005159244","items":["41750778"]}"; 

     Users steamUsers = new JavaScriptSerializer().Deserialize<Users>(return_value); 
    } 
} 
+1

你的代碼不能編譯,通常看起來不像C#。你到目前爲止做了什麼? –

+0

我只是想把它解析成一個數組,比如我的EXAMPLE!從來沒有告訴我的代碼工作!但我認爲每個優秀的編碼人員都能夠理解我的意思......? – Herlex

+1

當你在SO上發佈一個問題時,它應該反映你的努力,以及你目前失敗的地方。我們不是代碼生成器。 –

回答

0

你的json字符串有一些錯誤。您正在將語句與字符串值混合。如果您嘗試構建字符串,則應該使用\來避免"

var return_value = 
    "{\"user\":\"76561198005159244\",\"items\":[\"41750778\",\"25316150\"]}... etc"; 

話雖如此,一種檢查序列化和反序列化是否有效的方法就是用相反的方法來測試它。由於您使用的是強類型對象,因此從序列化程序生成有效的json更容易。

試試這個:

public class Users { 
    //arrays are more supported 
    public SteamUser[] data { get; set; } 
} 

public class SteamUser { 
    public string id { get; set; } 
    public string[] weapons { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var testObject = new Users() { 
      data = new SteamUser[] { 
       new SteamUser() { 
        id = "100", 
        weapons = new []{ "paper", "rock", "spock"} 
       } 
      } 
     }; 

     //i am not familiar enough with the JavaScriptSerializer 
     //but this should result in a proper json string 
     var validstring= new JavaScriptSerializer().Serialize(testObject); 

     //since you now have a valid string (Console.WriteLine(validstring);) 
     //deserialization should always work 
     Users steamUsers = new JavaScriptSerializer().Deserialize<Users>(validstring); 
    } 
} 

現在您爲您解串器,它可以作爲一個例子使用一個有效的輸入。