首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >kotlin with fastjson解析对象错误:找不到默认构造函数

kotlin with fastjson解析对象错误:找不到默认构造函数
EN

Stack Overflow用户
提问于 2018-12-31 11:01:20
回答 1查看 597关注 0票数 1

我正在尝试使用Kotlin代码中的fastjson解析对象。但是当我使用JSON.parseObject时发生了异常,下面是详细信息:

我的数据类:

代码语言:javascript
复制
    import com.alibaba.fastjson.JSONObject

    data class StatesMessage @JvmOverloads constructor(val command: String = 
        "states", var states: States = States()) {

      fun toJsonString(): String {
          return JSONObject.toJSONString(this)
      }

      data class States(var x: Double = 0.0, var y: Double = 0.0)
    }

然后我尝试从字符串中获取对象:

代码语言:javascript
复制
val state = JSON.parseObject(s, StatesMessage::class.java)

但是来自fastjson的异常抛出:

代码语言:javascript
复制
Caused by: com.alibaba.fastjson.JSONException: default constructor not found. 
    class com.example.demo.StatesMessage
   at com.alibaba.fastjson.util.JavaBeanInfo.build(JavaBeanInfo.java:475)
   at com.alibaba.fastjson.util.JavaBeanInfo.build(JavaBeanInfo.java:221)
   at com.alibaba.fastjson.parser.ParserConfig.createJavaBeanDeserializer(ParserConfig.java:670)
   at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:587)
   at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:398)
   at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:665)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:365)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:269)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:488)
   at com.example.demo.StartupRunner.run(StartupRunner.kt:25)
   at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:813)
... 5 more

所有代码都引用https://github.com/forest-yang/koltinjson

EN

回答 1

Stack Overflow用户

发布于 2018-12-31 21:50:37

我认为这是一个快速的bug (直到1.2.54)。当我换成gson时,就是工作。

代码语言:javascript
复制
    /* it will throw exception
    val state = JSON.parseObject(s, StatesMessage::class.java)
    */
    val state = Gson().fromJson(s, StatesMessage::class.java)
    logger.info(state.states.x)
    logger.info(state.states.y)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53983174

复制
相关文章

相似问题

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