【发布时间】:2018-08-27 17:25:04
【问题描述】:
我两天前发布了有关 firebase 的问题: Android Firebase - add authenticated user into database
我得到了我需要的帮助,这解决了第一个问题。但现在我有一个新问题。我在谷歌上搜索了很长一段时间,有一些关于这个问题的帖子,但没有解决我的问题。我不想在上一个问题中发送垃圾邮件,所以我发布了一个新问题。
当我尝试从 firebase 数据库中读取插入的数据时,出现以下错误:
Newtonsoft.Json.JsonSerializationException:转换值时出错 “test@user.com”键入“carServiceApp.My_Classes.Account”。小路 “电子邮件”,第 1 行,第 24 位。
代码如下:
private async Task LoadData()
{
FirebaseUser users = FirebaseAuth.GetInstance(loginActivity.app).CurrentUser;
id = users.Uid;
var firebase = new FirebaseClient(loginActivity.FirebaseURL);
var items = await firebase.Child("users").Child(id).OnceAsync<Account>();
foreach (var item in items)
{
Account user = new Account();
user.uid = item.Object.uid;
user.name = item.Object.name;
user.lastName = item.Object.lastName;
user.phone = item.Object.phone;
user.email = item.Object.email;
userInput_ime.Text = user.name;
userInput_prezime.Text = user.lastName;
userInput_broj.Text = user.phone;
userInput_email.Text = user.email;
}
}
这是 Firebase 数据:
-users
-jwAP2dYNzJeiF3QlmEIEQoruUkO2
email: "test@user.com"
lastName: "user"
name: "test"
phone: "12421"
uid: "jwAP2dYNzJeiF3QlmEIEQoruUkO2"
有趣的是,当我尝试用这个读取数据时:
var items = await firebase.Child("users").OnceAsync<Account>();
这很好用(我得到了最后插入的用户)。但是当我添加'uid' 节点时,我得到了错误。我试图解决这个问题已经有一段时间了,但我就是想不通。我猜想帐户类没有问题,因为它在没有uid 节点的情况下工作,但在添加另一个child() 方法时不起作用。
您可以在顶部的链接中查看其他信息(帐户类代码和将该数据存储到数据库中的方式)。
注意:我尝试在 Account 类中添加构造函数,但这没有帮助。
【问题讨论】:
-
我认为问题的原因很简单,因为 JsonConvert 序列化程序区分大小写“电子邮件”和“电子邮件”不同,为什么不尝试在帐户属性中进行此更改并检查一下
-
@G.hakim 已经尝试过了。没用。
-
而且,正如我所说,当我尝试在没有最后一个子节点(uid 节点)的情况下读取数据时,它一切正常,它只选择最后一个输入的用户。但是我希望选择特定的用户,这就是为什么我添加了该 uid 节点以及添加最后一个子节点时(读取数据时)出现上述错误。
标签: c# json firebase firebase-realtime-database xamarin.android