Hi Experts,
I managed to get json file using
HttpWebRequest.
And I used JSON.net to convert json file to Datatable.
when trying to convert it give me the following error:
Unexpected JSON token when reading DataTable. Expected StartArray, got StartObject. Path '', line 1, position 1.
Here's my c# code:
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://abc.com/makes.json");
httpWebRequest.Method = WebRequestMethods.Http.Get;
httpWebRequest.Accept = "application/json; charset=utf-8";
string file;
var response=(HttpWebResponse)httpWebRequest.GetResponse();
using (var sr = new StreamReader(response.GetResponseStream()))
{
file = sr.ReadToEnd();
}
var table = JsonConvert.DeserializeObject<DataTable>(file);
if (table.Rows.Count > 0)
{
}
here is how the file looks like:
{"makes":[{"makeid":21,"name":"Acura"},{"makeid":250,"name":"AM GENERAL"},{"makeid":5,"name":"Audi"},{"makeid":239,"name":"BMW"},{"makeid":65,"name":"Buick"},{"makeid":66,"name":"Cadillac"},{"makeid":1,"name":"Chevrolet"},{"makeid":10,"name":"Chrysler"},{"makeid":9,"name":"Dodge"},{"makeid":2,"name":"Ford"},{"makeid":11,"name":"GMC"},{"makeid":13,"name":"Honda"},{"makeid":117,"name":"Hummer"},{"makeid":19,"name":"Hyundai"},{"makeid":123,"name":"Infiniti"},{"makeid":240,"name":"Isuzu"},{"makeid":242,"name":"Jaguar"},{"makeid":130,"name":"Jeep"},{"makeid":18,"name":"Kia"},{"makeid":321,"name":"Lada"},{"makeid":244,"name":"Land Rover"},{"makeid":143,"name":"Lexus"},{"makeid":144,"name":"Lincoln"},{"makeid":15,"name":"Mazda"},{"makeid":245,"name":"Mercedes-Benz"},{"makeid":152,"name":"Mercury"},{"makeid":241,"name":"Mini"},{"makeid":158,"name":"Mitsubishi"},{"makeid":14,"name":"Nissan"},{"makeid":167,"name":"Oldsmobile"},{"makeid":281,"name":"Opel"},{"makeid":180,"name":"Plymouth"},{"makeid":181,"name":"Pontiac"},{"makeid":17,"name":"Porsche"},{"makeid":311,"name":"RAM"},{"makeid":331,"name":"Renault"},{"makeid":238,"name":"Saab"},{"makeid":12,"name":"Saturn"},{"makeid":243,"name":"Scion"},{"makeid":202,"name":"Subaru"},{"makeid":204,"name":"Suzuki"},{"makeid":209,"name":"Toyota"},{"makeid":16,"name":"Volkswagen"},{"makeid":6,"name":"Volvo"},{"makeid":301,"name":"VPG"}]}
But when giving this format (manually) it works!
file= "[ { \"makeid\": 21, \"name\": \"Acura\" }, { \"makeid\": 250, \"name\": \"AM GENERAL\" }, { \"makeid\": 5, \"name\": \"Audi\" }, { \"makeid\": 239, \"name\": \"BMW\" }, { \"makeid\": 65, \"name\": \"Buick\" }, { \"makeid\": 66, \"name\": \"Cadillac\" }, { \"makeid\": 1, \"name\": \"Chevrolet\" }, { \"makeid\": 10, \"name\": \"Chrysler\" }, { \"makeid\": 9, \"name\": \"Dodge\" }, { \"makeid\": 2, \"name\": \"Ford\" }, { \"makeid\": 11, \"name\": \"GMC\" }, { \"makeid\": 13, \"name\": \"Honda\" }, { \"makeid\": 117, \"name\": \"Hummer\" }, { \"makeid\": 19, \"name\": \"Hyundai\" }, { \"makeid\": 123, \"name\": \"Infiniti\" }, { \"makeid\": 240, \"name\": \"Isuzu\" }, { \"makeid\": 242, \"name\": \"Jaguar\" }, { \"makeid\": 130, \"name\": \"Jeep\" }, { \"makeid\": 18, \"name\": \"Kia\" }, { \"makeid\": 321, \"name\": \"Lada\" }, { \"makeid\": 244, \"name\": \"Land Rover\" }, { \"makeid\": 143, \"name\": \"Lexus\" }, { \"makeid\": 144, \"name\": \"Lincoln\" }, { \"makeid\": 15, \"name\": \"Mazda\" }, { \"makeid\": 245, \"name\": \"Mercedes-Benz\" }, { \"makeid\": 152, \"name\": \"Mercury\" }, { \"makeid\": 241, \"name\": \"Mini\" }, { \"makeid\": 158, \"name\": \"Mitsubishi\" }, { \"makeid\": 14, \"name\": \"Nissan\" }, { \"makeid\": 167, \"name\": \"Oldsmobile\" }, { \"makeid\": 281, \"name\": \"Opel\" }, { \"makeid\": 180, \"name\": \"Plymouth\" }, { \"makeid\": 181, \"name\": \"Pontiac\" }, { \"makeid\": 17, \"name\": \"Porsche\" }, { \"makeid\": 311, \"name\": \"RAM\" }, { \"makeid\": 331, \"name\": \"Renault\" }, { \"makeid\": 238, \"name\": \"Saab\" }, { \"makeid\": 12, \"name\": \"Saturn\" }, { \"makeid\": 243, \"name\": \"Scion\" }, { \"makeid\": 202, \"name\": \"Subaru\" }, { \"makeid\": 204, \"name\": \"Suzuki\" }, { \"makeid\": 209, \"name\": \"Toyota\" }, { \"makeid\": 16, \"name\": \"Volkswagen\" }, { \"makeid\": 6, \"name\": \"Volvo\" }, { \"makeid\": 301, \"name\": \"VPG\" } ]";
please advise what's wrong with my code. I can't do it manually everytime. i need to read json files from url then convert them to datatables to be saved to DB.
thanks
Samira