OverRide15
OverRide15

Reputation: 29

Visual Studio C# How to parse and list each record/field of a json webservice

Below is the json text I receive for a test web service and looking for how it each record field could be displayed .

{"records":[ {"id":"10","email":"[email protected]","name":"Dot"},{"id":"855","email":"webcastpoa0@myhost","name":"name_0"},{"id":"856","email":"webcastpoa1@myhost","name":"name_1"},{"id":"857","email":"webcastpoa2@myhost","name":"name_2"},{"id":"858","email":"webcastpoa3@myhost","name":"name_3"},{"id":"859","email":"webcastpoa4@myhost","name":"name_4"},{"id":"860","email":"webcastpoa5@myhost","name":"name_5"},{"id":"861","email":"webcastpoa6@myhost","name":"name_6"},{"id":"862","email":"webcastpoa7@myhost","name":"name_7"},{"id":"863","email":"webcastpoa8@myhost","name":"name_8"},{"id":"864","email":"webcastpoa9@myhost","name":"name_9"},{"id":"865","email":"webcastpoa10@myhost","name":"name_10"},{"id":"866","email":"webcastpoa11@myhost","name":"name_11"},{"id":"867","email":"webcastpoa12@myhost","name":"name_12"},{"id":"868","email":"webcastpoa13@myhost","name":"name_13"},{"id":"869","email":"webcastpoa14@myhost","name":"name_14"},{"id":"870","email":"webcastpoa15@myhost","name":"name_15"},{"id":"871","email":"webcastpoa16@myhost","name":"name_16"},{"id":"872","email":"webcastpoa17@myhost","name":"name_17"},{"id":"873","email":"webcastpoa18@myhost","name":"name_18"},{"id":"874","email":"webcastpoa19@myhost","name":"name_19"},{"id":"875","email":"webcastpoa20@myhost","name":"name_20"},{"id":"876","email":"webcastpoa21@myhost","name":"name_21"},{"id":"877","email":"webcastpoa22@myhost","name":"name_22"},{"id":"878","email":"webcastpoa23@myhost","name":"name_23"},{"id":"879","email":"webcastpoa24@myhost","name":"name_24"},{"id":"880","email":"webcastpoa25@myhost","name":"name_25"},{"id":"881","email":"webcastpoa26@myhost","name":"name_26"},{"id":"882","email":"webcastpoa27@myhost","name":"name_27"},{"id":"883","email":"webcastpoa28@myhost","name":"name_28"},{"id":"884","email":"webcastpoa29@myhost","name":"name_29"},{"id":"885","email":"webcastpoa30@myhost","name":"name_30"},{"id":"886","email":"webcastpoa31@myhost","name":"name_31"},{"id":"887","email":"webcastpoa32@myhost","name":"name_32"},{"id":"888","email":"webcastpoa33@myhost","name":"name_33"},{"id":"889","email":"webcastpoa34@myhost","name":"name_34"},{"id":"890","email":"webcastpoa35@myhost","name":"name_35"},{"id":"891","email":"webcastpoa36@myhost","name":"name_36"},{"id":"892","email":"webcastpoa37@myhost","name":"name_37"},{"id":"893","email":"webcastpoa38@myhost","name":"name_38"},{"id":"894","email":"webcastpoa39@myhost","name":"name_39"},{"id":"895","email":"webcastpoa40@myhost","name":"name_40"},{"id":"896","email":"webcastpoa41@myhost","name":"name_41"},{"id":"897","email":"webcastpoa42@myhost","name":"name_42"},{"id":"898","email":"webcastpoa43@myhost","name":"name_43"},{"id":"899","email":"webcastpoa44@myhost","name":"name_44"} ]}

I have the following code so far.

using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Net;
using System.IO;
using Newtonsoft.Json;

WebClient client = new WebClient();
string reply = client.DownloadString("http://192.168.1.115/php_poa/test_select.php");
MessageBox.Show(reply);

records p1 = JsonConvert.DeserializeObject<records>(reply);
MessageBox.Show(p1.ToString());


class records
{
    public string id { get; set; }
    public string email { get; set; }
    public string name { get; set; }
}

And would like a for loop to process each record.

THanks

Upvotes: 0

Views: 78

Answers (3)

Alexander I.
Alexander I.

Reputation: 2714

You need to use next class for deserialization:

class MyResponse
{
    public List<Records> Records { get; set; }
}

class Records
{
    public string Id { get; set; }
    public string Email { get; set; }
    public string Name { get; set; }
}

And now you can deserialize your web response:

MyResponse myResponse = JsonConvert.DeserializeObject<MyResponse>(reply);

Upvotes: 1

styx
styx

Reputation: 1915

to iterate through a loop you can do something like this

 JObject records = JObject.Parse(json);

 foreach (var record in obj["records"])
{
  records p1 = JsonConvert.DeserializeObject<records>(reply);
}

although i would suggest creating a constructor for your class instead of using DeserializeObject

like this

   public Records(JToken toekn)
    {
        Id = (string)toekn["Id "];
        Email = (string)toekn["Email "];
        Name = (string)toekn["Name "];
    }

and use Records record = new Records(record) instead of DeserializeObject inside the loop

Upvotes: 0

Kundan Singh Chouhan
Kundan Singh Chouhan

Reputation: 14292

Just use List<record> instead. You won't require to iterate it through loop.

Example:

List<records> p1 = JsonConvert.DeserializeObject<List<records>>(reply);

Remember to add following namespace at top

using System.Collection.Generic;

Upvotes: 1

Related Questions