Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

default constructor not found in Kotlin #1593

Closed
Lua12138 opened this issue Nov 20, 2017 · 7 comments
Closed

default constructor not found in Kotlin #1593

Lua12138 opened this issue Nov 20, 2017 · 7 comments
Labels

Comments

@Lua12138
Copy link

I've got this

Data Class

data class Configuration(val signature: String, val last_update: Long, val plugins: List<Plugins>)

Try to serialize

val configuration = JSON.parseObject(jsonString, Configuration::class.javaObjectType)

Exception

com.alibaba.fastjson.JSONException: default constructor not found. class packagename.Configuration
   at com.alibaba.fastjson.parser.JavaBeanInfo.build(JavaBeanInfo.java:496)
   at com.alibaba.fastjson.parser.JavaBeanDeserializer.<init>(JavaBeanDeserializer.java:35)
   at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:225)
   at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:144)
   at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:683)
   at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:659)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:212)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:184)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:143)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:252)
   at packagename.Worker.run(Worker.kt:195)
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
   at java.util.concurrent.FutureTask.run(FutureTask.java:237)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
   at java.lang.Thread.run(Thread.java:841)

Fastjson Version

1.1.64.android

@wenshao
Copy link
Member

wenshao commented Nov 20, 2017

This problem was fixed in version 1.1.67.android.

@Lua12138
Copy link
Author

Lua12138 commented Nov 21, 2017

Thanks for your response.
But I've tried using the 1.1.67.android version, and it's still the same problem

Data Class

data class JsonBean(val signature: String, val list: List<Lists>)
data class Lists(val name: String)

Test code

        val jsonString = """
        {
          "signature": "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918",
          "lists": [
            {
                "name":"aaa"
            },{
                "name":"bbb"
            }
          ]
        }
        """

        try {
            val jsonObject = JSON.parseObject(jsonString, JsonBean::class.javaObjectType)
            println(jsonObject)
        } catch (e: java.lang.Exception) {
            Log.e("fastjson.test", e)
        }

Exception

com.alibaba.fastjson.JSONException: default constructor not found. class .JsonBean
   at com.alibaba.fastjson.parser.JavaBeanInfo.build(JavaBeanInfo.java:496)
   at com.alibaba.fastjson.parser.JavaBeanDeserializer.<init>(JavaBeanDeserializer.java:35)
   at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:229)
   at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:148)
   at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:683)
   at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:659)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:238)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:210)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:169)
   at com.alibaba.fastjson.JSON.parseObject(JSON.java:278)

Target Device

Android 4.4 API 19

@wenshao wenshao added bug and removed OldVersion labels Nov 21, 2017
@wenshao wenshao added this to the 1.1.68.android milestone Nov 21, 2017
@paulhsu
Copy link

paulhsu commented Nov 21, 2017

Please also check JSON.toJavaObject(Class clazz)

I got the same error on 1.1.67.android

@wenshao
Copy link
Member

wenshao commented Jan 1, 2018

@gam2046

"lists": [

It should be "list", not "lists"

wenshao added a commit that referenced this issue Jan 1, 2018
@forest-yang
Copy link

I am using Springboot 2.1.1, fastjson 1.2.54, Kotlin 1.3.11, the problem exists as well.
Stackoverflow link

PS: when I use gson instead, it works.

        /* 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)

@wolfhan
Copy link

wolfhan commented Jan 8, 2019

Try this

@Lua12138 Lua12138 closed this as completed Jul 8, 2019
wenshao added a commit that referenced this issue Jul 17, 2019
@4332weizi
Copy link

什么时候可以修复?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants