首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用json-lib转换为java抛出ClassCastException。

使用json-lib转换为java抛出ClassCastException。
EN

Stack Overflow用户
提问于 2011-05-14 07:14:18
回答 5查看 7.6K关注 0票数 0

我使用吉森利卜将json对象转换为java。守则如下:

代码语言:javascript
复制
public class JsonConvertorDemo {

    public static void main(String[] args) {
        B b1 = new B("b1");
        Map<String, B> bMap = new HashMap<String, B>();
        bMap.put("key1", b1);
        A a1 = new A(bMap);

        JSONObject jsonObject = JSONObject.fromObject(a1);
        String json = jsonObject.toString();
        jsonObject = JSONObject.fromObject(json);

        Map<String, Class> classMap = new HashMap<String, Class>();
        classMap.put("bMap", Map.class);
        a1 = (A) JSONObject.toBean(jsonObject, A.class, classMap);

        bMap = a1.getbMap();
        System.out.println(bMap.get("key1").getB1());
    }
}

public class A {
    private Map<String, B> bMap = new HashMap<String, B>();
    public A() {}
    public A(Map<String, B> bMap) {
        this.bMap = bMap;
    }
    public Map<String, B> getbMap() {
        return bMap;
    }
    public void setbMap(Map<String, B> bMap) {
        this.bMap = bMap;
    }
}

public class B {
    private String b1;
    public B() {}
    public B(String b1) {
        this.b1 = b1;
    }
    public String getB1() {
        return b1;
    }
    public void setB1(String b1) {
        this.b1 = b1;
    }
}

它引发以下异常:

线程"main“java.lang.ClassCastException中的异常: 不能将net.sf.ezmorph.bean.MorphDynaBean转换为code.orgexample.json.B。 在code.orgexample.json.JsonConvertorDemo.main(JsonConvertorDemo.java:30)

有办法在json中指定映射值的类类型吗?

非常感谢你的帮助。

EN

回答 5

Stack Overflow用户

发布于 2011-06-20 13:58:07

据说这里 fromObject接受JSON格式的字符串、映射、DynaBeans和JavaBeans

票数 1
EN

Stack Overflow用户

发布于 2013-04-24 08:56:56

正如chro所说:

这里说fromObject接受JSON格式的字符串、映射、DynaBeans和JavaBeans

在我的代码中,ClassCastException是由以下原因引起的:

代码语言:javascript
复制
for (TheClass childNode : command.getChildren()) {

当将代码更改为以下代码时,一切正常工作:

代码语言:javascript
复制
for (Object childNode : command.getChildren()) {
        JSONObject fromObject = JSONObject.fromObject(childNode);
        TheClass childCommand = (TheClass) JSONObject.toBean(fromObject,
            TheClass.class);
    }
票数 1
EN

Stack Overflow用户

发布于 2013-12-20 08:29:42

http://hw1287789687.iteye.com/admin/blogs/1993048

代码语言:javascript
复制
JsonConfig jsonConfig = new JsonConfig();

    jsonConfig.setRootClass(Class2.class);
    Map<String, Class> classMap = new HashMap<String, Class>();
    classMap.put("students", Student.class); // 指定JsonRpcRequest的request字段的内部类型
    jsonConfig.setClassMap(classMap);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6000370

复制
相关文章

相似问题

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