2015-05-05 2 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

Я просто хочу, чтобы он разбирался в массив, такой как мой ПРИМЕР! никогда не говорил, что мой код работает! но я думаю, что каждый хороший кодер способен понять, что я имею в виду ...? – 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); 
    } 
} 

Теперь вы будете иметь действительный ввод для десериализации, который вы можете использовать в качестве примера.

Смежные вопросы