gpt4 book ai didi

java - 适用于 Android 的 Windows Azure SDK - 如何从序列化中排除 DTO 的属性?

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:08 25 4
gpt4 key购买 nike

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

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

下面的代码返回 MobileServiceException ({"code":400,"error":"Error: 属性 'SubCategories' 的值属于 'object' 类型,该类型不受支持。"})

Category category = new Category();     
category.Name = "new";
category.ParentId = 1;
mClient.getTable(Category.class).insert(category, new TableOperationCallback<Category>() {
@Override
public void onCompleted(Category entity, Exception exception, ServiceFilterResponse response) {
if(exception!=null)
{
Log.e("Service error", exception.getMessage());
}
}
});

最佳答案

事实证明,如果您使用默认的 Gson 构造函数,如 here 所示,@Expose 注释将被忽略。 .

我能够通过删除 Expose 并使字段变为 transient 来解决我的问题:

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

关于java - 适用于 Android 的 Windows Azure SDK - 如何从序列化中排除 DTO 的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com