I appologize in advance as this is probably an easy fix, and going to be overly annoying for all who read it. However thanks in advance for ANY and ALL help given! I haven't coded in years, however recent events require me to pick back up again. I've never coded in anything except VB6, so this is all a learning process to me. I'm trying to use newtonsoft.json to deserialize a json string returned from White Pages Pro api. Everything worked perfectly and deserialized flawlessly UNTIL i got to is_commercial. Everything past there is where I run into issues with. The errors I'm encountering are as follows:
WhitePagesTool.jsonPersonComplex' does not contain a definition for 'Name' and no extension method 'Name' accepting a first argument of type 'WhitePagesTool.jsonPersonComplex' could be found (are you missing a using directive or an assembly reference?)
Also throws the same error for all the following:
firstname, middlename, lastname, age_range, gender, street_line_1, street_line_2, city, postal_code, state_code, country_code, latitude, longitude, accuracy, and associated_people
This is the typical Json string I'll be working with (changed info for obvious reasons):
{
"id": "Phone.ID.Number",
"phone_number": "5555555555",
"is_valid": true,
"country_calling_code": "1",
"line_type": "Landline",
"carrier": "Suddenlink Communications",
"is_prepaid": false,
"is_commercial": false,
"belongs_to": [
{
"id": "Person.ID.Number",
"name": "John Json Doe",
"firstname": "John",
"middlename": "Json",
"lastname": "Doe",
"age_range": "30+",
"gender": "Male",
"type": "Person",
"link_to_phone_start_date": "2018-01-01"
}
],
"current_addresses": [
{
"id": "Location.ID.Number",
"location_type": "Address",
"street_line_1": "123 Annoying Street",
"street_line_2": null,
"city": "CSharp",
"postal_code": "12345",
"zip4": "1234",
"state_code": "FL",
"country_code": "US",
"lat_long": {
"latitude": 12.345678,
"longitude": -12.345678,
"accuracy": "RoofTop"
},
"is_active": true,
"delivery_point": "SingleUnit",
"link_to_person_start_date": "2018-01-01"
}
],
"historical_addresses": [
],
"associated_people": [
{
"id": "Person.ID.Number",
"name": "Jane Doe",
"firstname": "Jane",
"middlename": null,
"lastname": "Doe",
"relation": "Household"
},
{
"id": "Person.ID.Number",
"name": "John J Doe",
"firstname": "John",
"middlename": "J",
"lastname": "Doe",
"relation": "Household"
},
{
"id": "Person.ID.Number",
"name": "John Json Doe",
"firstname": "John",
"middlename": "Json",
"lastname": "Doe",
"relation": "PotentialOwner"
},
{
"id": "Person.ID.Number",
"name": "Jane J Doe",
"firstname": "Jane",
"middlename": "J",
"lastname": "Doe",
"relation": "PotentialOwner"
},
{
"id": "Person.ID.Number",
"name": "Jane Json Doe",
"firstname": "Jane",
"middlename": "Json",
"lastname": "Doe",
"relation": "PotentialOwner"
}
],
"alternate_phones": [
],
"error": null,
"warnings": [
]
}
This is my Deserialize Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace WhitePagesTool
{
class jsonPersonComplex
{
public string id { get; set; }
public string phone_number { get; set; }
public bool is_valid { get; set; }
public string line_type { get; set; }
public string carrier { get; set; }
public bool is_prepaid { get; set; }
public bool is_commercial { get; set; }
public List<BelongsTo> belongs_to { get; set; }
public class BelongsTo
{
public string name { get; set; }
public string firstname { get; set; }
public string middlename { get; set; }
public string lastname { get; set; }
public string age_range { get; set; }
public string gender { get; set; }
public string type { get; set; }
}
public class CurrentAddress
{
public string street_line_1 { get; set; }
public object street_line_2 { get; set; }
public string city { get; set; }
public string postal_code { get; set; }
public string state_code { get; set; }
public string country_code { get; set; }
public LatLong lat_long { get; set; }
}
public class LatLong
{
public double latitude { get; set; }
public double longitude { get; set; }
public string accuracy { get; set; }
}
public class AssociatedPeople
{
public string name { get; set; }
public string firstname { get; set; }
public string middlename { get; set; }
public string lastname { get; set; }
public string relation { get; set; }
}
}
}
This is my entire Form code
using System;
using Newtonsoft.Json;
using System.Windows.Forms;
namespace WhitePagesTool
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
#region UI events
private void cmdDeserialize_Click(object sender, EventArgs e)
{
deserialiseJSON(txtInput.Text);
}
private void cmdClear_Click(object sender, EventArgs e)
{
txtDebugOutput.Text = string.Empty;
}
#endregion
#region json functions
private void deserialiseJSON(string strJSON)
{
try
{
var jPerson = JsonConvert.DeserializeObject<jsonPersonComplex>(strJSON);
debugOutput("Phone ID: " + jPerson.id.ToString());
debugOutput("Phone Number: " + jPerson.phone_number.ToString());
debugOutput("Valid Number: " + jPerson.is_valid);
debugOutput("Line Type: " + jPerson.line_type);
debugOutput("Carrier: " + jPerson.carrier);
debugOutput("Prepaid: " + jPerson.is_prepaid);
debugOutput("Commercial: " + jPerson.is_commercial);
debugOutput("Name: " + jPerson.Name);
debugOutput("First Name: " + jPerson.firstname);
debugOutput("Middle Name: " + jPerson.middlename);
debugOutput("Last Name: " + jPerson.lastname);
debugOutput("Age Range: " + jPerson.age_range);
debugOutput("Gender: " + jPerson.gender);
debugOutput("Address: " + jPerson.street_line_1);
debugOutput("Extended Address: " + jPerson.street_line_2);
debugOutput("City: " + jPerson.city);
debugOutput("Postal Code: " + jPerson.postal_code);
debugOutput("State: " + jPerson.state_code);
debugOutput("Country: " + jPerson.country_code);
debugOutput("Latitude: " + jPerson.latitude);
debugOutput("Longitude: " + jPerson.longitude);
debugOutput("Accuracy: " + jPerson.accuracy);
debugOutput("Associate Name: " + jPerson.associated_people.name);
debugOutput("Associate First Name: " + jPerson.associated_people.firstname);
debugOutput("Associate Middle Name: " + jPerson.associated_people.middlename);
debugOutput("Associate Last Name: " + jPerson.associated_people.lastname);
debugOutput("Associate Relationship: " + jPerson.associated_people.relationship);
debugOutput("Associate Name: " + jPerson.associated_people.name);
debugOutput("Associate First Name: " + jPerson.associated_people.firstname);
debugOutput("Associate Middle Name: " + jPerson.associated_people.middlename);
debugOutput("Associate Last Name: " + jPerson.associated_people.lastname);
debugOutput("Associate Relationship: " + jPerson.associated_people.relationship);
debugOutput("Associate Name: " + jPerson.associated_people.name);
debugOutput("Associate First Name: " + jPerson.associated_people.firstname);
debugOutput("Associate Middle Name: " + jPerson.associated_people.middlename);
debugOutput("Associate Last Name: " + jPerson.associated_people.lastname);
debugOutput("Associate Relationship: " + jPerson.associated_people.relationship);
debugOutput("Associate Name: " + jPerson.associated_people.name);
debugOutput("Associate First Name: " + jPerson.associated_people.firstname);
debugOutput("Associate Middle Name: " + jPerson.associated_people.middlename);
debugOutput("Associate Last Name: " + jPerson.associated_people.lastname);
debugOutput("Associate Relationship: " + jPerson.associated_people.relationship);
debugOutput("Associate Name: " + jPerson.associated_people.name);
debugOutput("Associate First Name: " + jPerson.associated_people.firstname);
debugOutput("Associate Middle Name: " + jPerson.associated_people.middlename);
debugOutput("Associate Last Name: " + jPerson.associated_people.lastname);
debugOutput("Associate Relationship: " + jPerson.associated_people.relationship);
}
catch(Exception ex)
{
debugOutput("We Had A Problem: " + ex.Message.ToString());
}
}
#endregion
#region Debug Output
private void debugOutput(string strDebugText)
{
try
{
System.Diagnostics.Debug.Write(strDebugText + Environment.NewLine);
txtDebugOutput.Text = txtDebugOutput.Text + strDebugText + Environment.NewLine;
txtDebugOutput.SelectionStart = txtDebugOutput.TextLength;
txtDebugOutput.ScrollToCaret();
}
catch(Exception ex)
{
System.Diagnostics.Debug.Write(ex.Message.ToString() + Environment.NewLine);
}
}
#endregion
}
}
What I have tried:
Everything I Can think of. I've watched countless hours of videos, and everything works, UNTIL I get past the one part!