@Bodden

Как сформировать Json из массива?

Здравствуйте,
Подскажите пожалуйста, где я не правильно делаю? Уже голову сломал.
Есть строка:
{
    "inline_keyboard": [
        [{
                "text": "Обычная кнопка",
                "callback_data": "ОтветНаСообщение1"
            }
        ],
        [{
                "text": "Кнопка 1",
                "callback_data": "Button1"                
            }, {
                "text": "Кнопка 2",
                "callback_data": "Button2"
            }, {
                "text": "Кнопка 3",
                "callback_data": "Button3"
            }
        ]]
}

Специальной вставкой VS создал классы:
public class Rootobject
{
    public Inline_Keyboard[][] inline_keyboard { get; set; }
}

public class Inline_Keyboard
{
    public string text { get; set; }
    public string callback_data { get; set; }
}

Пытаюсь все запустить:
private static async Task Main(string[] args)
    {

        Rootobject rootobject = new Rootobject();
        rootobject.inline_keyboard = new Inline_Keyboard[3][];

        rootobject.inline_keyboard[0][0] = new Inline_Keyboard()
        {
            text = "Button1",
            callback_data = "Button1"
        };
        rootobject.inline_keyboard[1][0] = new Inline_Keyboard()
        {
            text = "Button2",
            callback_data = "Button2"
        };
        rootobject.inline_keyboard[1][1] = new Inline_Keyboard()
        {
            text = "Button3",
            callback_data = "Button3"
        };

        var jsonSt = JsonSerializer.Serialize(rootobject);

        Console.WriteLine(jsonSt);
}

Но ни чего не получается. Подскажите пожалуйста, что не так?

Ошибка:
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at Program.Main(String[] args) in C:\C#_DEV\TelegaKeyboard\Program.cs:line 16
at Program.(String[] args)
  • Вопрос задан
  • 197 просмотров
Решения вопроса 2
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
Ты записываешь данные в неинициализированные массив.
Т.е. у тебя каждый элемент внешнего массива - null.

Просто инициализируй их:
var keyboard = new Inline_Keyboard[3][];
keyboard[0] = new Inline_Keyboard[1];
keyboard[1] = new Inline_Keyboard[2];
keyboard[2] = new Inline_Keyboard[2];
rootobject.inline_keyboard = keyboard;


P.S. но лучше замени на List
Ответ написан
@mvv-rus
Настоящий админ AD и ненастоящий программист
Вы не инициализуете сами массивы (не содаете для них объекты типа Inline_Keyboard[]) нижнего уровня: rootobject.inline_keyboard[0] и rootobject.inline_keyboard[1]. Ну, и rootobject.inline_keyboard[2] тоже стоило бы создать IMHO.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы