将字符串数据转换为结构:在 Java AppEngine (Objectify) 上插入

介绍


你好,我正在 Go AppEngine 上做一个模块,我在读取一些模型时遇到问题,其中有嵌套模型。模型是Party,我想要的是Permissions。但是,当我从数据存储中获取 Party 时,Permissions 结构字段的类型是字符串。


//And when I do fmt.Println(party.Permissions) show this:


%!(EXTRA string=jjrz�5878654076715008 *��jjrzshowOnMessages 

*zcanInviteAssistants *zcanInviteOrganizers *z canEditEvent 

*zroleName *    organizerzisAdmin *�z�4709220381360128 

*��jjrzshowOnMessages *zcanInviteAssistants *zcanInviteOrganizers 

*z canEditEvent *zroleName *ownerzisAdmin *��

那个字符串是什么?有没有办法获得原始结构?


模型



type Party struct {

  Name string `datastore:"name"`

  Permissions string `datastore:"permissions"`

}


type PartyPermission struct {

  isAdmin bool

  canInviteOrganizers bool

  canInviteAssistants bool

  canEditParty bool

  showOnMessages bool

  roleName string

}

爪哇


@Entity

public class Party implements Cloneable, Serializable {


    @Id

    private Long id;


    private String name;


    private Map<String, PartyPermission> permissions;


    // constructor ...


    // getters, setters, etc

}


public class PartyPermission implements Serializable {


    private static final long serialVersionUID = 3019266092062869643L;


    private boolean isAdmin;


    private boolean canInviteOrganizers;


    private boolean canInviteAssistants;


    private boolean canEditEvent;


    private boolean showsOnMessages;


    private String roleName;


    // constructor


    // getters, setters, etc


}

我试过的


我从 10 号星期一开始,我不知道那个字符串是什么。我想也许那个字符串是一个接口,我可以将该字符串转换为一个接口,然后转换为我真正想要的,map[string]PartyPermission。所以,反思:


func (p *Party) GetPermissions() (map[string]PartyPermission) {


  iPermissions := reflect.ValueOf(p.Permissions).Interface()


  return iPermissions.(map[string]PartyPermission)  

}

编译得很好,但 Go 说字符串不能转换成其他东西。就像是:


interface conversion: interface is string, not map[string]packName.PartyPermission

谢谢你的时间。


慕村225694
浏览 125回答 1
1回答

江户川乱折腾

你不能,你必须为该格式创建一个解码器。你可以使用 json 或其他东西。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go