首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gson IllegalStateException

Gson IllegalStateException
EN

Stack Overflow用户
提问于 2010-11-20 03:35:40
回答 1查看 823关注 0票数 0

除了SharedPreferences和一些SQLite之外,对于所有形式的存储,我都是个菜鸟。我进行了一些搜索,发现JSON+GSON是一种将对象及其字段解析为可存储字符串的快速方法。

因此,在我的游戏中,我有一个Player对象,它的字段也是我自己的类:

代码语言:javascript
复制
public class Player {
    private int something_game_related = 1;
    private Skill equipped_skill;
    private Item equipped_weapon;

    public Player () {}
}

我怀疑这些类是问题所在,因为当我尝试运行一个简单的保存方法时:

代码语言:javascript
复制
private class ItemSerializer implements JsonSerializer<Item> {
    public JsonElement serialize( Item src, Type typeOfSrc, JsonSerializationContext context ) {
        return new JsonPrimitive(src.toString());
    }
}
private class SkillSerializer implements JsonSerializer<Skill> {
    public JsonElement serialize( Skill src, Type typeOfSrc, JsonSerializationContext context ) {
        return new JsonPrimitive(src.toString());
    }
}

public void doSave() {
    GsonBuilder gson = new GsonBuilder();
    //Both custom classes have zero-arg constructors so we don't need to register those
    gson.registerTypeAdapter( Item.class, new ItemSerializer() );
    gson.registerTypeAdapter( Skill.class, new SkillSerializer() );
    Gson g = gson.create();
    String mPlayer = "";
    Type player = new TypeToken<Player>(){}.getType();
    try{
        mPlayer = g.toJson( GameView.mPlayer, player );   
    }
 catch (Exception e) {e.printStackTrace();}
 }

我得到了一个例外:java.lang.IllegalStateException: How can the type variable not be present in the class declaration!

我的问题是.

如何使这些自定义序列化程序工作?就像我说的我是个菜鸟..。但看起来我做得对..。

EN

回答 1

Stack Overflow用户

发布于 2011-02-11 09:55:30

在文档中,它说(某种程度上是细微的)静态字段被排除在外:http://sites.google.com/site/gson/gson-user-guide#TOC-Excluding-Fields-From-Serialization

您可以在GSON构建器中执行类似于"excludeFieldsWithModifier(Modifier.STATIC)“的操作来包含它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4231092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档