Доступ к многомерному массиву нескольких типов из другого класса в C# - PullRequest
0 голосов
/ 30 апреля 2020

Я новичок в C# и исследовал безуспешно. Я пришел из программирования в PHP, и у меня есть следующее JSON:

{"data": [
    {  "iD":0 , "name":"woody", "a":4.0, "b": 3.5, "foo": [5,8] },
    {  "iD":1 , "name":"donald", "a":5.0, "b": 2.4, "foo": [4, 2] }
]}

Мне нужно создать нечто подобное в C#, если это возможно, в отдельном классе, чтобы иметь доступ данные в правильном порядке. Я пытался создать разные массивы для каждого элемента, но я думаю, что это не правильно.

Из того, что я исследовал, основываясь на JSON, который я привел в качестве примера, у меня есть следующие данные типы: "string, int и double". В PHP вы можете смешивать данные этого типа в одном массиве и вызывать их по индексам, но я не знаю точно, как сделать то же самое в C #.

Eye, мой вопрос не как читать JSON, который я поставил выше, но как создать аналогичный массив (или объект) с этой структурой данных и получить к нему доступ из другого класса.

Надеюсь, я был ясен Спасибо заранее.

1 Ответ

2 голосов
/ 30 апреля 2020

Вы должны создать классы / структуры, представляющие структуру этих данных :

public class Datum {
    public int ID { get; set; }
    public string Name { get; set; }
    public double A { get; set; }
    public double B { get; set; }
    public List<int> C { get; set; }
}

Вы можете сохранить это Datum непосредственно в List<Datum>, или как вы это сделали в JSON сохраните его в другом классе как свойство с именем Data:

public class RootObject {
    public List<Datum> Data { get; set; }
}

Затем вы можете создать эти объекты, используя инициализаторы объекта и коллекции :

var rootObject = new RootObject {
    Data = new List<Datum> {
        new Datum {
            ID = 0,
            Name = "Woody",
            A = 4.0,
            B = 3.5,
            C = new List<int> { 5, 8 }
        },
        new Datum {
            ...
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...