V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
guyeuro
V2EX  ›  问与答

有自定义类的成员域的类, fastjson 如何序列化和反序列化?

  •  
  •   guyeuro · 2017-07-26 23:58:00 +08:00 · 3536 次点击
    这是一个创建于 2677 天前的主题,其中的信息可能已经有所发展或是发生改变。

    User 类的域如下

    private String username;
    private String password;
    Product product;
    

    然后

        User user = new User("nan", "123");
        Product product = new Product("apple", "red", 4.5);
        user.setProduct(product);
        String jsonStr = JSONObject.toJSONString(user);
        System.out.println(jsonStr);
        User u2 = JSONObject.parseObject(jsonStr, User.class);
        System.out.println(u2);
    

    结果:

    {"password":"123","product":{"desc":"red","name":"apple","price":4.5},"username":"nan"} Exception in thread "main" com.alibaba.fastjson.JSONException: default constructor not found. class nan.obj.Product at com.alibaba.fastjson.util.JavaBeanInfo.build(JavaBeanInfo.java:242) at com.alibaba.fastjson.util.JavaBeanInfo.build(JavaBeanInfo.java:140) at com.alibaba.fastjson.parser.ParserConfig.createJavaBeanDeserializer(ParserConfig.java:583) at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:500) at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:357) at com.alibaba.fastjson.parser.deserializer.FastjsonASMDeserializer_1_User.deserialze(Unknown Source) at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:208) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:642) at com.alibaba.fastjson.JSON.parseObject(JSON.java:350) at com.alibaba.fastjson.JSON.parseObject(JSON.java:254) at com.alibaba.fastjson.JSON.parseObject(JSON.java:467) at run.App2.main(App2.java:30)

    Process finished with exit code 1

    发现 parseObject 出错,确实,因为 Product 类型 JSONObject 不知道

    那么像这种域是自定义类的,序列化和反序列化如何做啊?

    1 条回复    2017-07-27 07:19:54 +08:00
    blindpirate
        1
    blindpirate  
       2017-07-27 07:19:54 +08:00
    default constructor not found
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3024 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:02 · PVG 22:02 · LAX 06:02 · JFK 09:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.