Java Android版Windows Azure SDK-如何从序列化中排除DTO属性?
我正在尝试使用Azure移动服务从我的Android应用程序中持久化数据。 我现在遇到的问题是,我有一个数据传输对象,其中有几个字段对应于Azure数据库表中的列。我有一个字段,我不想保留。我正在尝试使用@Expose annotation,但它似乎不起作用,我从Azure收到一个异常,说子类别的数据类型无效。我做错了什么Java Android版Windows Azure SDK-如何从序列化中排除DTO属性?,java,android,azure,azure-mobile-services,Java,Android,Azure,Azure Mobile Services,我正在尝试使用Azure移动服务从我的Android应用程序中持久化数据。 我现在遇到的问题是,我有一个数据传输对象,其中有几个字段对应于Azure数据库表中的列。我有一个字段,我不想保留。我正在尝试使用@Expose annotation,但它似乎不起作用,我从Azure收到一个异常,说子类别的数据类型无效。我做错了什么 package com.mycorp.myapp.model; import java.util.*; import com.google.gson.annotations.
package com.mycorp.myapp.model;
import java.util.*;
import com.google.gson.annotations.*;
public class Category {
public Category(){
SubCategories = new ArrayList<Category>();
}
public int Id;
public String Name;
public int ParentId;
@Expose(serialize = false, deserialize = false)
List<Category> SubCategories;
}
package com.mycorp.myapp.model;
导入java.util.*;
导入com.google.gson.annotations.*;
公共类类别{
公共类别(){
子类别=新的ArrayList();
}
公共int Id;
公共字符串名称;
公共int-ParentId;
@公开(序列化=false,反序列化=false)
列出子类别;
}
下面的代码返回一个MobileServiceException({“code”:400,“error”:“error:属性'SubCategories'的值的类型为'object',该类型不受支持。”})
Category Category=新类别();
category.Name=“新建”;
category.ParentId=1;
mClient.getTable(Category.class).insert(Category,new TableOperationCallback(){
@凌驾
未完成公共无效(类别实体、异常、ServiceFilterResponse响应){
if(异常!=null)
{
Log.e(“服务错误”,exception.getMessage());
}
}
});
结果是,如果您使用如上所述的默认Gson构造函数,@Expose注释将被忽略
我能够通过移除曝光并使场瞬态来解决我的问题:
package com.mycorp.myapp.model;
import java.util.*;
import com.google.gson.annotations.*;
public class Category {
public Category(){
SubCategories = new ArrayList<Category>();
}
public int Id;
public String Name;
public int ParentId;
//@Expose(serialize = false, deserialize = false)
transient List<Category> SubCategories;
}
package com.mycorp.myapp.model;
导入java.util.*;
导入com.google.gson.annotations.*;
公共类类别{
公共类别(){
子类别=新的ArrayList();
}
公共int Id;
公共字符串名称;
公共int-ParentId;
//@公开(序列化=false,反序列化=false)
临时清单子类别;
}
package com.mycorp.myapp.model;
import java.util.*;
import com.google.gson.annotations.*;
public class Category {
public Category(){
SubCategories = new ArrayList<Category>();
}
public int Id;
public String Name;
public int ParentId;
//@Expose(serialize = false, deserialize = false)
transient List<Category> SubCategories;
}