Php 如何反序列化jSON字符串数组以获取用户名?
正如您在我的PHP脚本中看到的,我编写了一个查询,使用唯一Id从特定用户(登录时)获取所有用户数据。当我获取JSON字符串时,我只需要用户名。我希望在模拟器屏幕上显示的用户名: PHP代码(不要担心SQL注入-->我稍后会修复它)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
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;