I’m actually trying to parse a JSON request response from my PHP web service into a c# object.
I’ve found some code sample using json.net and then I made this code from my Wine class :
public Wine(string json)
{
JObject jObject = JObject.Parse(json);
BottleName = (string)jObject["name"];
Category = (string)jObject["category"];
Prize50 = Double.Parse((string)jObject["prize_50"]);
Prize75 = Double.Parse((string)jObject["prize_75"]);
Prize150 = Double.Parse((string)jObject["prize_150"]);
Prize300 = Double.Parse((string)jObject["prize_300"]);
}
It’s work perfectly if a have only 1 response like
"{\"id\":\"2\",\"name\":\"Pinot noir\",\"loc_wine\":\"",\"category\":\"Red\",\"prize_50\":\"12.800000\",\"prize_75\":\"16.500000\",\"prize_150\":\"0.000000\",\"prize_300\":\"0.000000\"} "
But I hav trouble when I have another Json string in my json response and I wish know how can I deal with it?
And I have sometimes null fields, how can I ignore them?
Thank you for helping ! 🙂
P.S. If needed, this is how I send my datas from my PHP file :
$req = "SELECT *
FROM t_wine
WHERE name= \"Pinot noir\""; // for test purpose
$res = mysqli_query($connection, $req);
while($data= mysqli_fetch_assoc($res)) {
extract ($data);
echo json_encode($data);
}
If there is more than one row returned from the
mysqli_fetchstatement, then echoing the json response for each row without putting the response in an array will give you bad JSON. You’re response basically would look like this:So let’s take advantage of the array structure of JSON. Change your PHP code to output like an array
That will give you something like this:
Keep in mind, this is rough. You’ll need to trim that last comma before the end bracket. But that’s a valid JSON array.
You’ll also need to modify your C# to process the jObject as an array of objects instead of one object.