Я хочу превратить своего Джаррея в объект JO, но я не уверен, где мне следует это сделать. В xamarin или в PHP.
Итак, я начну с того, что дам вам свой массив, который я сделал в PHP, и он выглядит так:
$contacts = array();
while ($row = mysqli_fetch_array($stmt))
{
$contact = array(
"ID" => $row['ProduktID'],
"Name" => $row['ProduktNamn'],
);
}
echo json_encode($contacts, JSON_PRETTY_PRINT);
И это мой код в Xamarin C #,
static public async Task<JArray> getOurMainInfo() //Make it J0bject immediately? Or somehow transform it inside this function?
{
var httpClientRequest = new HttpClient ();
var result = await httpClientRequest.GetAsync ("http://localhost/getMyPhp.php");
var resultString = await result.Content.ReadAsStringAsync ();
var jsonResult = JArray.Parse (resultString).ToObject();
return jsonResult;
}
JArray — это JToken, который является объектом JObject … если JArray является массивом Json.net Json.net
Кроме того, вы отправляете пустой массив, поскольку вы не добавляете в него контакты …
В любом случае, если вы не можете напрямую использовать эти предложения, сначала создайте непротиворечивую модель на PHP, а затем проанализируйте ее в части xamarin:
PHP:
$contacts = array();
while ($row = mysqli_fetch_array($stmt))
{
$contact = new stdClass;
$contact->ID = $row['ProduktID'];
$contact->Name = $row['ProduktNamn'];
$contacts[] = $contact;
}
echo json_encode($contacts, JSON_PRETTY_PRINT);
И тогда на Xamarin:
public class Contact
{
public string ID{ get; set; } //change to the correct type
public string Name{ get; set; }
}
//...
static public async Task<List<Contact>> getOurMainInfo() //Make it J0bject immediately? Or somehow transform it inside this function?
{
var httpClientRequest = new HttpClient ();
var result = await httpClientRequest.GetAsync ("http://localhost/getMyPhp.php");
var resultString = await result.Content.ReadAsStringAsync ();
var jsonResult = JsonConvert.DeserializeObject<List<Contact>>(resultString);
return jsonResult;
}
Других решений пока нет …