标签: serializable

具体的C#类需要序列化属性吗?

在C#中,考虑我们有一个泛型类和一个具体

[Serializable]
public class GenericUser
{ ...

[Serializable]
public class ConcreteUser : GenericUser
{ ...
Run Code Online (Sandbox Code Playgroud)

是否有必要将ConcreteUser标记为[Serializable]或继承将处理它?

c# oop serializable

11
推荐指数
1
解决办法
667
查看次数

在构建版本中未找到数据类 Kotlin 的序列化器

我想将 json 字符串响应从 API 转换为对象:

val obj = Json.decodeFromString<MyModel>(jsonResponseString)
Run Code Online (Sandbox Code Playgroud)

我的数据类:

@Serializable
data class MyModel(
    @SerializedName("field") val field: String
)
Run Code Online (Sandbox Code Playgroud)

它看起来非常简单,并且可以在调试模式下运行!

但是,当编译 AppBundle、以发布模式构建并从 Play Store 内部测试下载应用程序时,我收到以下错误:

Serializer for class '...' is not found. Mark the class as @serializable or provide the 
serializer explicitly.
kotlinx.serialization.internal.Platform_commonKt.serializerNotRegistered
Run Code Online (Sandbox Code Playgroud)

android serializable kotlin kotlinx.serialization

11
推荐指数
2
解决办法
7069
查看次数

可序列化和瞬态

要使类可序列化,我们执行以下操作:

class A implements Serializable {
    transient Object a;
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

serializable class A {
   transient Object a;
}
Run Code Online (Sandbox Code Playgroud)

为什么,如果我们想使类可序列化,我们是否实现了一个特殊的接口.如果我们想要排除某些字段,我们会使用关键字 transient?为什么两种情况下都没有使用特殊关键字?我的意思是有什么理由以不同的方式做同样的事情吗?我知道,没有这样的关键字,serializable但为什么不引入它而不是特殊的界面Serializable

java serializable

10
推荐指数
1
解决办法
3万
查看次数

你可以覆盖scala @serializable对象中的流编写器吗?

我现在明白scala @serializable对象可以和Java Serializable对象一样使用.在Java Serializable对象中,您可以覆盖以更改对象流的方式:writeObject(ObjectOutputStream)/ readObject(ObjectOutputStream).

你可以覆盖或注入scala @serializable对象的方法,允许你改变对象的序列化方式吗?

serialization scala serializable

10
推荐指数
1
解决办法
2466
查看次数

Android可序列化问题

我创建了一个类,它有几个成员变量,所有这些变量都是可序列化的...除了一个Bitmap!我试图扩展位图并实现可序列化,而不是认为Bitmap是最终类.

我想保存课程(它基本上形成了游戏的当前状态),因此玩家可以提升并加载游戏.

我看到它的方式我有两个选择:1)找到另一种方法来保存游戏状态.任何帮助在这里将不胜感激.

2)比较将位图成员变量更改为int,并创建一个BitmapGetter类,该类具有基于int返回位图的静态方法.(这个选项并不容易,因为我的类包含了很多位图可能性,而且我创建游戏的方式意味着需要付出巨大的努力.

基本上我没有人可以责备,但我自己懒得创造一个位图变量而不考虑,但我会感激任何帮助......

android bitmap serializable

10
推荐指数
2
解决办法
2万
查看次数

UserControl集合未标记为可序列化

我必须遗漏一些非常明显的东西.我是C#的新手,但已经用C/C++编程多年了,很抱歉,如果这是一个非常明显的东西;)

[请参阅编辑以获取新问题]

我正在尝试创建一个包含UserControl的节点.我有控件出现在WinForm设计器中,我可以添加节点.但是,当我尝试运行代码时,我收到以下错误:

属性"节点"的代码生成失败.错误是:程序集'应用程序中的'Type App.Node',版本= 1.0.0.0,Culture = neutral,PublicKeyToken = null'未标记为可序列化.

然后我添加的节点都没有显示出来.

这开始让我发疯,据我所知,它被标记为可序列化.

该节点定义如下:

[Serializable]
public class Node : MarshalByRefObject
{
    public Node()
    {
    }

    public Node( String text )
    {
        this.Text       = text;
        this.Checked    = false;
        this.Complete   = false;
    }

    public String       Text        { get; set; }
    public bool         Checked     { get; set; }
    public bool         Complete    { get; set; }
    public bool         Selected    { get; set; }
};
Run Code Online (Sandbox Code Playgroud)

然后我定义一个"集合"如下:

[Serializable]
public class NodeCollection : List< Node >
{
    public …
Run Code Online (Sandbox Code Playgroud)

c# collections user-controls properties serializable

10
推荐指数
1
解决办法
1万
查看次数

碎片与Parcel崩溃:调用onPause方法时无法编组值错误

我一直在开发Android应用程序,但最近才进入Fragments,因此我遇到了很多学习如何使用它们的问题.我的应用程序中的一个活动有四个不同的片段,每个片段向用户显示一个项目列表.首先创建每个片段,并且仅在选择另一个选项卡时显示一次并隐藏.一旦创建了这些片段中的每一个,就将JSONObjects的ArrayList作为参数传递给片段,如下所示

            ft = fm.beginTransaction();

            if(currentFragment !=null){
                ft.hide(currentFragment);
            }
            if(whereFragment !=null){
                ft.show(whereFragment);
            }else{
                if(mPlaceList.size()>0){

                Bundle bundle = new Bundle();
                bundle.putSerializable("array", mPlaceList);
                whereFragment = new WhereFragment();
                whereFragment.setArguments(bundle);
                ft.add(R.id.newpost_container,whereFragment, "whereFragment");
                }
            }
            ft.commit();
            currentFragment = whereFragment;
Run Code Online (Sandbox Code Playgroud)

片段中收到了arraylist,一切正常.

actList = (ArrayList<JSONObject>) getArguments().getSerializable("array");
doingAdapter = new DoingAdapter(getActivity(), actList);
actListView.setAdapter(doingAdapter);
Run Code Online (Sandbox Code Playgroud)

父活动中有一个按钮可启动设备摄像头.一旦发生这种情况并且片段中的onPause方法被调用,应用程序崩溃,我在Logcat中收到此错误

logcat的:

    06-23 17:51:31.190: E/ACRA(29221): com.parspake.anar fatal error : Parcel: unable to marshal value {"type":"act","id":"5327f9827f49143f3a001c76","title":"????","actType":"where"}
06-23 17:51:31.190: E/ACRA(29221): java.lang.RuntimeException: Parcel: unable to marshal value {"type":"act","id":"5327f9827f49143f3a001c76","title":"????","actType":"where"}
06-23 17:51:31.190: E/ACRA(29221):  at android.os.Parcel.writeValue(Parcel.java:1235)
06-23 17:51:31.190: E/ACRA(29221):  at android.os.Parcel.writeList(Parcel.java:622)
06-23 …
Run Code Online (Sandbox Code Playgroud)

android serializable android-fragments jsonobject

10
推荐指数
2
解决办法
1万
查看次数

如何阻止ProGuard从类中剥离Serializable接口

是否有一种明确的方法可以阻止ProGuard将类更改为实现接口?

我有一个实现的类java.io.Serializable,让我们称之为com.my.package.name.Foo.我发现在运行ProGuard后,它不再实现了Serializable.我得到null我从投后Serializable,以Foofalse,如果我请与一个实例instanceof Serializable.我已确保将ProGuard设置为忽略此类:

-keep class com.my.package.name.Foo
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

-keep class com.my.package.name.Foo { *; }
Run Code Online (Sandbox Code Playgroud)

我也尝试了整个包:

-keep class com.my.package.name.** { *; }
Run Code Online (Sandbox Code Playgroud)

要么:

-keep class com.my.package.** { *; }
Run Code Online (Sandbox Code Playgroud)

并且还要保留所有Serializable课程:

-keep class * implements java.io.Serializable { *; }
Run Code Online (Sandbox Code Playgroud)

但无济于事.我在兄弟包(大致:)中有另一个类,com.my.package.name2.Bar它也实现Serializable和使用类似但没有问题.

我不确定它是否相关,但我将它装在一个罐子里用于Android.使用这些类的代码包括将它们放入Bundles中,这就是我需要的原因Serializable.我认为也许某种程度上ProGuard认为它Foo从未被用作a Serializable但似乎不太可能,因为我将它作为参数传递给我,Bundle.putSerializable(String, Serializable)并且我做了隐式演员:Serializable serializable = foo;.事实上,当我调试时,我可以看到Fooget into Bundle …

java android proguard serializable

9
推荐指数
2
解决办法
7142
查看次数

Android - 将Parcelable数据保存到文件中

我曾经使用Serializable对象将它们保存在filesytem中并读取它们以便做任何我想做的事情.但是当你必须在活动之间传递数据时,序列化很慢,所以我读了比推荐使用Parcelable.然后我做了,是的,它更快!但现在,我有一点问题.由于Parcelable针对IPC进行了优化,因此它们不可序列化,无法保存到文件中.所以我想知道是否可以这样做.

此外,如果我决定为我的类实现Parcelable和Serializable接口,但只使用Parcelable在我的活动之间传递数据,我将能够将类保存到文件中.但我想,因为我使用serializable(只保存,不传递数据),这不是一个好主意哼哼?

我也想过使用Gson库,从类中序列化数据,并将JSON保存到文件中,并重用Gson反序列化JSON以获取我的Parcelable对象.这似乎是个好主意吗?性能怎么样?

感谢大家的回答!

J.

android serializable parcelable gson

9
推荐指数
1
解决办法
1万
查看次数

为模型创建多个 DTO 是一个好习惯吗?

假设我有一个包含许多字段的User类:

public class User {
    public Integer id;
    public String name;
    public String username;
    public Integer age;
    public Address address;
    public String phoneNumber;
    public String email;
}
Run Code Online (Sandbox Code Playgroud)

但我并不总是需要前端的所有用户属性。每个屏幕只需要一些用户字段。为每个屏幕创建 DTO 类是一个好习惯吗,因为它们访问不同的属性?像这样:

class UserToScreenADTO implements Serializable {
    public String name;
    public String email;
}

class UserToScreenBDTO implements Serializable {
    public String phoneNumber;
    public Address address;
}

class UserToScreenCDTO implements Serializable {
    public Integer id;
    public String username;
    public String email;
}
Run Code Online (Sandbox Code Playgroud)

java hibernate serializable dto

9
推荐指数
2
解决办法
3473
查看次数