Как десериализовать мой строковый массив jSON для получения моего имени пользователя? - PullRequest
0 голосов
/ 16 марта 2020

Как вы можете видеть в моем скрипте PHP, я написал запрос на получение всех пользовательских данных от определенного пользователя c (при входе в систему) с использованием уникального идентификатора. Когда я получил JSON строку, я хочу только имя пользователя. Это имя пользователя, которое я хотел бы отобразить на экране моего эмулятора:

PHP -код (не беспокойтесь о SQL инъекции -> Я исправлю это позже )

<?php

$db = new mysqli('localhost', 'root', '', 'test');

$Id = mysqli_real_escape_string($db, $_POST['Id']);

$res = mysqli_query($db, "SELECT * from User WHERE Id = '$Id'");

$rows = array();

while($r = mysqli_fetch_assoc($res)) 
{
    $rows[] = $r;
}

echo json_encode($rows);

?>

Xamarin-Code Поэтому я хотел бы десериализовать ТОЛЬКО имя пользователя строки json и после, чтобы отобразить его на экране эмулятора. Может ли кто-нибудь помочь мне с десериализацией объекта Username? В этом коде 'List' и 'res' подчеркнуты красным цветом ...

    public async void GetUserData()
    {
        user u = new user();

        HttpResponseMessage res;

        var content = new FormUrlEncodedContent(new[]
        {
            new KeyValuePair<string, string>("Id", u.Id)
        });

        res = await client.PostAsync("http://10.0.2.2/DATA/USER/DataByID/Data.php", content);

        var user = JsonConvert.DeserializeObject<List>(res); // 'res' and '<List>' are underlined

        u.Username = users[1]; // I want to refer to the second property in the json string (Username)

        BindingContext = u; // displaying the Username on the screen of the emulator
    }

JSON - Строка

[{"Id":"13","Username":"aze","Email":"aze@aze.be","Passwd":"0a5b3913cbc9a9092311630e869b4442","Age":"27"}]

1 Ответ

0 голосов
/ 16 марта 2020
var json = await result.Content.ReadAsStringAsync();
var users = JsonConvert.DeserializeObject<List<user>>(json);
u = users[0];
// u will now contain all of your user properties
BindingContext = u;
...