Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何反序列化jSON字符串数组以获取用户名?_Php_Json_Xamarin.forms_Json Deserialization - Fatal编程技术网

Php 如何反序列化jSON字符串数组以获取用户名?

Php 如何反序列化jSON字符串数组以获取用户名?,php,json,xamarin.forms,json-deserialization,Php,Json,Xamarin.forms,Json Deserialization,正如您在我的PHP脚本中看到的,我编写了一个查询,使用唯一Id从特定用户(登录时)获取所有用户数据。当我获取JSON字符串时,我只需要用户名。我希望在模拟器屏幕上显示的用户名: PHP代码(不要担心SQL注入-->我稍后会修复它) var json=wait result.Content.ReadAsStringAsync(); var users=JsonConvert.DeserializeObject(json); u=用户[0]; //u现在将包含您的所有用户属性 BindingCont

正如您在我的PHP脚本中看到的,我编写了一个查询,使用唯一Id从特定用户(登录时)获取所有用户数据。当我获取JSON字符串时,我只需要用户名。我希望在模拟器屏幕上显示的用户名:

PHP代码(不要担心SQL注入-->我稍后会修复它)

var json=wait result.Content.ReadAsStringAsync();
var users=JsonConvert.DeserializeObject(json);
u=用户[0];
//u现在将包含您的所有用户属性
BindingContext=u;

如果您只想要
用户名,为什么要选择*
?另外,如果只有一行,为什么要循环?因为我的目标是处理我用户的所有数据,但就本例而言,我只需要我的用户名是的,我知道,这更糟糕吗?这对反序列化有影响吗?我对xamarin.forms一无所知,但
$rows[]=$r在数组中创建了您可能不需要的附加维度。使用此代码时,我获得以下错误(breakmode):“System.ArgumentOutOfRangeException:'索引超出范围。必须为非负且小于集合的大小。参数名称:Index'”则反序列化无效。你的
user
C#类与你的json匹配吗?使用json2csharp.com检查我已经检查过了,并且用户类与您发送的站点的输出相同。我想这可能是因为MySQL数据库中的Id是“INT”,而Xamarin数据库中的Id是“STRING”,我刚刚测试了这个反序列化,它对meCan起到了作用。你能告诉我你做了什么,或者显示你的代码吗?但是当我们将json字符串放入您发送的站点时,我们获得了与xamarin中相同的类,所以这不是问题。。。
<?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);

?>
    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
    }
[{"Id":"13","Username":"aze","Email":"aze@aze.be","Passwd":"0a5b3913cbc9a9092311630e869b4442","Age":"27"}]
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;