JToken Array для таблицы данных C # - PullRequest
1 голос
/ 21 октября 2019

У меня есть результат JSON со следующей структурой:

{
"property1":1,
"property2":[[1,"A"],[2,"B"],[3,"C"],...] // Possible to get >10000 values
}

При использовании вышеуказанного формата данных JSON меня интересует только получение значений массива из свойства property2 , которое содержитмассив значений массива и преобразовать его в таблицу данных.

Приведенный выше результат JSON получен из внешнего WEB API, и вот что у меня есть на данный момент:

var jsonResponse = API.RetrieveData();
JObject json = JObject.Parse(jsonResponse);           
JToken[] A = json["property2"].ToArray();

Логически я могу циклически обрабатывать элементы массива [] Столбец за столбцоми добавьте его в предварительно разработанную таблицу данных. Моя проблема заключается в том, что при использовании этого будет зависеть производительность, так как в большинстве случаев данные, которые будут получены из API, имеют значения> 10000.

Существует ли какой-либо конкретный способ преобразования JSON такого типаФорматировать в DataTable в c # наиболее эффективным способом?

Заранее спасибо.

1 Ответ

1 голос
/ 21 октября 2019

У меня есть лучший и быстрый подход к вам

Шаг 1

Создайте класс, аналогичный структуре json

public class JsonClass
{
   public string property1 { get ; set; }
   public List<Dictionary<int,string>> property2 { get ; set; }
}

Шаг 2

Использование Newtonsoft и десериализация ввода json в класс соответствия json

JsonClass jsonClass = JsonConvert.DeserializeObject<JsonClass>(jsonInputString);

Шаг 3

если вы используете WPF , просто используйте

datatable.ItemSource = jsonClass ;

, если вы используете Winform , затем используйте BindingSource Component

BindingSource binding = new BindingSource();
binding.DataSource = jsonClass;
datatable.DataSource = binding;

Результат может быть

property1 | property2
---------------------------------------
"A"       |  Collection 

Удачи

...