- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
故事
我在我的应用中使用 Firebase 实时数据库。我有一个类似这样的模型。
class Item {
int mItemName;
// Simplified for brevity
}
现在,这会将字段作为 itemName
存储在我的实时数据库中。但我不想使用该命名约定。我希望命名模式是这样的,item_name
。
我做了什么
我像这样在字段上方使用了@PropertyName("item_name"),
class Item {
@PropertyName("item_name")
int mItemName;
// Simplified for brevity
}
问题
Firebase 似乎完全忽略了注释。我无法更改序列化和反序列化的属性名称。
任何帮助将不胜感激。
编辑
这是完整的模型类,
public class FileModel {
@PropertyName("file_id")
String mFileId;
@PropertyName("file_name")
String mOriginalFileName;
@PropertyName("file_path")
String mFilePath;
@PropertyName("file_type")
String mFileType;
@PropertyName("last_modified")
Long mFileLastModified;
@PropertyName("file_size")
String mFileSize;
@Exclude
private boolean mIsSelected;
/**
* Must have empty constructor for JSON deserialization by Firebase
*/
public FileModel() {
}
public FileModel(String fileId, String originalFileName,
String filePath, String fileType, Long fileLastModified, String fileSize) {
this.mFileId = fileId;
this.mOriginalFileName = originalFileName;
this.mFilePath = filePath;
this.mFileType = fileType;
this.mFileLastModified = fileLastModified;
this.mFileSize = fileSize;
}
public String getFileId() {
return mFileId;
}
public void setFileId(String fileId) {
this.mFileId = fileId;
}
public String getOriginalFileName() {
return mOriginalFileName;
}
public void setOriginalFileName(String originalFileName) {
this.mOriginalFileName = originalFileName;
}
public String getFilePath() {
return mFilePath;
}
public void setFilePath(String filePath) {
this.mFilePath = filePath;
}
public String getFileType() {
return mFileType;
}
public void setFileType(String fileType) {
this.mFileType = fileType;
}
public Long getFileLastModified() {
return mFileLastModified;
}
public void setFileLastModified(Long fileLastModified) {
this.mFileLastModified = fileLastModified;
}
public String getFileSize() {
return mFileSize;
}
public void setFileSize(String fileSize) {
this.mFileSize = fileSize;
}
public boolean getIsSelected() {
return mIsSelected;
}
public void setIsSelected(boolean isSelected) {
this.mIsSelected = isSelected;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
FileModel model = (FileModel) o;
if (mIsSelected != model.mIsSelected) return false;
if (mFileId != null ? !mFileId.equals(model.mFileId) : model.mFileId != null) return false;
if (mOriginalFileName != null ? !mOriginalFileName.equals(model.mOriginalFileName) : model.mOriginalFileName != null)
return false;
if (mFilePath != null ? !mFilePath.equals(model.mFilePath) : model.mFilePath != null)
return false;
if (mFileType != null ? !mFileType.equals(model.mFileType) : model.mFileType != null)
return false;
if (mFileLastModified != null ? !mFileLastModified.equals(model.mFileLastModified) : model.mFileLastModified != null)
return false;
return mFileSize != null ? mFileSize.equals(model.mFileSize) : model.mFileSize == null;
}
@Override
public int hashCode() {
int result = mFileId != null ? mFileId.hashCode() : 0;
result = 31 * result + (mOriginalFileName != null ? mOriginalFileName.hashCode() : 0);
result = 31 * result + (mFilePath != null ? mFilePath.hashCode() : 0);
result = 31 * result + (mFileType != null ? mFileType.hashCode() : 0);
result = 31 * result + (mFileLastModified != null ? mFileLastModified.hashCode() : 0);
result = 31 * result + (mFileSize != null ? mFileSize.hashCode() : 0);
result = 31 * result + (mIsSelected ? 1 : 0);
return result;
}
@Override
public String toString() {
return "FileModel{" +
"mFileId='" + mFileId + '\'' +
", mOriginalFileName='" + mOriginalFileName + '\'' +
", mFilePath='" + mFilePath + '\'' +
", mFileType='" + mFileType + '\'' +
", mFileLastModified=" + mFileLastModified +
", mFileSize='" + mFileSize + '\'' +
", mIsSelected=" + mIsSelected +
'}';
}
}
最佳答案
Kotlin 数据类的解决方案:
data class Pojo (@get:PropertyName("fieldName") @set:PropertyName("fieldName") var field: String = "")
关于android - Firebase @PropertyName 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38681260/
这个问题已经有答案了: JavaScript property access: dot notation vs. brackets? (17 个回答) 已关闭 5 年前。 假设我有一个像这样的对象数组
所以我定义了一个带有属性的类 - 在本示例中我们将其称为 propertyName。我在实现中使用 @synthesize 设置了属性。 我有一个名为 objectToNSDictionary 的方法
我正在使用 java.util.Properties 对象,我通常使用 keySet() 来获取属性的所有键。 我想知道 keySet() 或 propertyNames() 哪个更好。 proper
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
在试图更好地理解 javascript 背后的原型(prototype)时,我偶然发现了以下内容,到目前为止我还无法理解。 我知道函数是一等对象,但我不明白为什么 Object 在 Function.
我已经看到在同一个项目中使用了这两种样式,我想知道它们之间是否存在任何语义差异,或者是否会推荐任何一种风格以及为什么。 最佳答案 只要您有一个带有类型参数的复杂属性路径,您就会遇到一个显着的差异。 从
在 objective-c 中通过“propertyname”和“self.propertyname”访问属性之间有什么区别?你能在答案中涵盖: 什么是最佳做法? 这两种方法如何影响内存管理(保留计数
我有这样的对象定义 var obj = { abcdefghijkl: 'abcdefghijkl', other_key: 1234 }; 我可以在 Javascript 中将获取属性名称的对象本身
在 javascript 中,我们可以使用键而不是索引号从数组中选择一个值,执行如下操作: objectName["propertyName"] 或 objectName.propertyName J
我不知道正则表达式, 但是我需要正则表达式来计算ClassName.PropertyName吗? 需要验证 appSettings 中的一些值是否符合 ClassName.PropertyName 约
在实现 INotifyPropertyChanged 时,我一直不确定 propertyName 的含义。所以通常你将 INotifyPropertyChanged 实现为: public class
我面临的问题是,当我有一个类的属性具有如下默认值时: public class Border { public Border() { InitializeAdornment()
我有一些使用 ASP.Net MVC 的 C# 代码,它使用 Json.Net 来序列化一些 DTO。为了减少负载,我使用 [JsonProperty(PropertyName = "shortNam
故事 我在我的应用中使用 Firebase 实时数据库。我有一个类似这样的模型。 class Item { int mItemName; // Simplified for brevi
This question already has answers here: JavaScript property access: dot notation vs. brackets? (13个回
这是我的 xaml,它告诉 collectionviewsource 排序属性名称。 上面的 xaml 工作正
源代码 我有一些代码要求我调用一个属性 setter 来测试一个类的锁定功能是否正常工作(该类的一些函数是async,要求挂锁 bool 值是在执行期间设置)。如果已为实例设置锁,则已编写 sette
源代码 我有一些代码要求我调用一个属性 setter 来测试一个类的锁定功能是否正常工作(该类的一些函数是async,要求挂锁 bool 值是在执行期间设置)。如果已为实例设置锁,则已编写 sette
我正在尝试将我的 Winforms UI 绑定(bind)到我的 ViewModel。我能够在 UI 更改时成功更新我的 ViewModel,反之亦然。但是,我似乎无法理解 PropertyChang
有 Spring Data Rest reference有人可以解释一下排序表达式 ($propertyname,)+[asc|desc]? ?它看起来像正则表达式,但我怀疑。 我知道,如果我简单地将
我是一名优秀的程序员,十分优秀!