C# фильтрация результатов json из restclient
Я совершенно новичок в C# и не имею никакого фона в этом языке.
Единственный язык программирования, в котором я разбираюсь, - это SQL.
Моя ситуация:
У меня есть URL-адрес API с веб-сайта, который моя компания использует для мониторинга уровня продукта в резервуарах.
API возвращает json-список резервуаров (местоположение, идентификатор резервуара, размер резервуара, текущий уровень и т. д.).
Моя цель - создать приложение windows form с полем ввода.
Пользователь вводит название местоположения, нажимает кнопку и видит информацию о любых резервуарах в этом местоположении.
Что я уже пробовал:
Что я сделал до сих пор:
Опять же, у меня нет никаких знаний о программировании, поэтому не критикуйте меня, если я делал что-то очень необычным/неэффективным способом.
Мне удалось создать форму windows, которая имеет кнопку и текстовое поле.
При нажатии на кнопку текстовое поле заполняется всеми данными резервуара из API.
Я не могу понять, как фильтровать возвращенные данные.
Мой текущий код приведен ниже...
using Newtonsoft.Json.Linq; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Serialization; using RestSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Security.Principal; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using static APIform.Form1; namespace APIform { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var client = new RestClient("https://{{my tank monitor website}}/admin/data_feed_configs/140.json"); client.Timeout = -1; var request = new RestRequest(Method.GET); request.AddHeader("auth-token", "{{my token}}"); request.AddHeader("auth-email", "{{my authorization email}}"); request.AddHeader("Authorization", "{{my auth code}}"); request.AddHeader("Cookie", "{{cookies}}"); IRestResponse response = client.Execute(request); var data = response.Content; JArray jsonArray = JArray.Parse(data); textBox1.Text = jsonArray.ToString(); } } }
Я добавил класс модели TankClass, который напоминает текст, возвращенный из запроса.
public class TankClass { public string location_name { get; set; } public string owner_name { get; set; } public string tank_id { get; set; } public string tank_name { get; set; } public string product_name { get; set; } public int tank_size { get; set; } public string sensor_value { get; set; } public string reading_inches { get; set; } public string reading_volume { get; set; } public string available_capacity { get; set; } public int fill_percentage { get; set; } public string fill_status { get; set; } public string alert_status { get; set; } public int days_to_empty { get; set; } public string battery_level { get; set; } public string product_sku { get; set; } public string reading_time { get; set; } public string division { get; set; } }
Все, что я пытаюсь десериализовать/отфильтровать результаты, похоже, не работает.
Что мне нужно добавить в код, чтобы это сработало?
У меня есть второе текстовое поле (textbox2) на форме.
Здесь пользователь, например, введет "склад 1".
Когда они затем нажмут на кнопку, Я хотел бы, чтобы в поле textbox1 отображались только танки на складе 1.
С моим текущим кодом это пример того, что отображается в поле textbox1 при нажатии кнопки:
[ { "location_name": "Warehouse 1", "owner_name": "ABC Oil, Inc.", "tank_id": "W00813862", "tank_name": "Dow - Desitherm (TEG) Tank #M-20-065", "product_name": "Dow - Desitherm (TEG)", "tank_size": 2005.0, "sensor_value": "2.379", "reading_inches": "29.6", "reading_volume": "908.2", "available_capacity": "1096.8", "fill_percentage": 45, "fill_status": "COULD", "alert_status": "", "days_to_empty": 124.4, "battery_level": "6.1", "product_sku": "", "reading_time": "2020-09-16T10:55:35-04:00", "division": "1024" }, { "location_name": "Warehouse 2", "owner_name": "ABC Oil, Inc.", "tank_id": "Z057101", "tank_name": "OSI 84 - Diesel Exhaust Fluid (DEF)", "product_name": "Diesel Exhaust Fluid (DEF)", "tank_size": 8806.0, "sensor_value": "2554.0 | 3263.0", "reading_inches": "76.3", "reading_volume": "4868.8", "available_capacity": "3937.2", "fill_percentage": 55, "fill_status": "GOOD", "alert_status": "", "days_to_empty": 14.5, "battery_level": "-", "product_sku": "", "reading_time": "2020-09-16T10:59:00-04:00", "division": "" }, . . . ]