Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.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
Java Android版Windows Azure SDK-如何从序列化中排除DTO属性?_Java_Android_Azure_Azure Mobile Services - Fatal编程技术网

Java Android版Windows Azure SDK-如何从序列化中排除DTO属性?

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.

我正在尝试使用Azure移动服务从我的Android应用程序中持久化数据。 我现在遇到的问题是,我有一个数据传输对象,其中有几个字段对应于Azure数据库表中的列。我有一个字段,我不想保留。我正在尝试使用@Expose annotation,但它似乎不起作用,我从Azure收到一个异常,说子类别的数据类型无效。我做错了什么

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;
}