Захватить количество различных значений в объекте - PullRequest
0 голосов
/ 13 декабря 2018

Когда я делаю веб-вызов через API, он отображает файл JSON.У меня нет проблем с выбором определенных данных, которые я хочу.Для этого проекта мы не хотим этого делать.Мы хотим получить результат для всего, что имеет статус = 1, и отобразить это число.

        List<stats> ls = new List<stats>();
        ls = rClient.makeRequest(txtURL1.Text);

        listBox1.DataSource = ls;
        listBox1.DisplayMember = "fullResult";

        var url = ls[1].ID;
        string access = ls[1].FirstAccessed;
        string endAccess = ls[1].LastAccessed;
        string count = ls.Count.ToString();
        string status = ls[int.Parse(count)- 1].Status;
        string intCon = url.ToString();
        dataOutput.Text = intCon + " " + access + " " + endAccess + "  " + count + " " + status;

Как видите, я выбрал разные части файла JSON.Я пытался получить некоторую информацию, но мои результаты не были хорошими.Мне нужно немного руководства для этого.Только что начал играть с C #.

ListBox отображает все, что исходит от API, поэтому я хочу прочитать все эти данные и извлечь отдельные коды состояния таким образом.

Вывод JSON

[
    {
    "ID": 502,
    "WorkflowID": "5b7ac3e66eb51a0dcc287f84",
    "WorkflowName": "I9 Approval",
    "EngineID": null,
    "FilePages": null,
    "PortalID": 0,
    "Permissions": 0,
    "ProcessActions": null,
    "SSDocument": {
        "SSDBID": 1002,
        "SSArchiveID": 1,
        "SSDocumentID": 164
    },
    "LastAccessed": "2018-11-28T17:34:38.843Z",
    "FirstAccessed": "2018-11-28T17:34:38.843Z",
    "Status": 3, **<--- Want to read this here.**
    "CurrentNode": "-7",
    "Wait": 0,
    "WaitStart": "0001-01-01T00:00:00Z",
    "Queue": null,
    "Properties": [

Парсинг JSON Здесь:

    public List<stats> makeRequest(string endPoint)
    {

        string strResponseVlaue = string.Empty;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint);
        request.Method = httpMethod.ToString();
        request.Method = "GET";
        request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("SSAdministrator:Password!"));
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;



        {
            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new ApplicationException("Error Code: "+ response.StatusCode.ToString());
            }
            //Process the response stream

        using (Stream responseStream = response.GetResponseStream())
            {
                if(responseStream != null)
                {
                    using(StreamReader reader = new StreamReader(responseStream))
                    {
                        strResponseVlaue = reader.ReadToEnd();
                    }
                }
            } //End of Response Stream
        }// End Of Using Reponse

        var obj = JsonConvert.DeserializeObject<List<stats>>(strResponseVlaue);
        return obj;

Есть еще 47 результатов от API.

1 Ответ

0 голосов
/ 13 декабря 2018

Если status является свойством объекта stats, и вы получаете List<stats> после десериализации вашего JSON, вы можете получить счетчик следующим образом:

using System.Linq;

var statusOneCount = ls.Count(i=>i.status == 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...