Niraj K Verma Ответов: 2

Как десериализовать коллекцию json.


Как десериализовать коллекцию json.

{"success":true,"data":{"game_id":1,"game_name":"Test Game","game_owner_id":1,"host_id":1,"host_name":"Test Host","variant_id":1,"variant_name":"DeskTop","mode":"demoplay","host_game_id":1,"host_game_display_name":"Test Host Game","host_interface_id":1,"host_interface_name":"Test Interface Name","parameters":{"host_parameters":[{"parameter_id":1,"parameter_name":"Test Base Parameter","parameter_value":"Host param value","currency_code":"INR"}],"game_parameters":[{"parameter_id":1,"parameter_name":"Test Base Parameter","parameter_value":"Game param value","currency_code":"INR"},{"parameter_id":2,"parameter_name":"Test Base Parameter","parameter_value":"ffffsss","currency_code":"INR"}]},"game":"Test Game","host":"Test Host","variant":"DeskTop"},"message":"Games retrieved successfully"}

Что я уже пробовал:

 dynamic stuff = JsonConvert.DeserializeObject(jsondata);
            string str = stuff.success + "<br>" + stuff.data.game_id + "<br>" + stuff.data.game_name + "<br>" + stuff.data.variant_name + "<br>" + stuff.message + "<br>" + stuff.data.game_owner_id + "<br>" + stuff.data.host_id + "<br>" + stuff.data.host_name + "<br>" + stuff.data.variant_id + "<br>" + stuff.data.variant_name + "<br>" + stuff.data.mode + "<br>" + stuff.data.host_game_id + "<br>" + stuff.data.host_game_display_name + "<br>" + stuff.data.host_interface_id + "<br>" + stuff.data.host_interface_name ;
            Response.Write(str);

but i am stuck when i try to get data from 
"parameters":{"host_parameters":[{"parameter_id":1,"parameter_name":"Test Base Parameter","parameter_value":"Host param value","currency_code":"INR"}]
 this section.

2 Ответов

Рейтинг:
18

OriginalGriff

Если вы не уверены, используйте что-то вроде json2csharp - генерация классов c# из json[^] чтобы создать классы C# из вашего образца JSON:

public class HostParameter
{
    public int parameter_id { get; set; }
    public string parameter_name { get; set; }
    public string parameter_value { get; set; }
    public string currency_code { get; set; }
}

public class GameParameter
{
    public int parameter_id { get; set; }
    public string parameter_name { get; set; }
    public string parameter_value { get; set; }
    public string currency_code { get; set; }
}

public class Parameters
{
    public List<HostParameter> host_parameters { get; set; }
    public List<GameParameter> game_parameters { get; set; }
}

public class Data
{
    public int game_id { get; set; }
    public string game_name { get; set; }
    public int game_owner_id { get; set; }
    public int host_id { get; set; }
    public string host_name { get; set; }
    public int variant_id { get; set; }
    public string variant_name { get; set; }
    public string mode { get; set; }
    public int host_game_id { get; set; }
    public string host_game_display_name { get; set; }
    public int host_interface_id { get; set; }
    public string host_interface_name { get; set; }
    public Parameters parameters { get; set; }
    public string game { get; set; }
    public string host { get; set; }
    public string variant { get; set; }
}

public class RootObject
{
    public bool success { get; set; }
    public Data data { get; set; }
    public string message { get; set; }
}
Из этого должно быть довольно очевидно, как получить доступ к каждому элементу.


Рейтинг:
1

Graeme_Grant

Я знаю, что опаздываю с ответом, но ... "Дайте человеку рыбу, и вы накормите его на день; научите человека ловить рыбу, и вы накормите его на всю жизнь."

Эта статья ответит на этот и многие другие вопросы, которые могут возникнуть или возникнут у вас в связи с этим. Работа с JSON в C# и VB[^]