Skip to content

kotlin data class 和泛型JSON.parseObject<Entity>(json)的bug[BUG] #1491

@ozy1996

Description

@ozy1996

kotlin 中解析 data class的问题,是不支持kotlin还是bug呢

1.使用val data = JSON.parseObject<Entity>(json) 会报错
2.val data = JSON.parseObject(json,Entity::class.java)解析不出来,结果是显示默认值,如果entity没有默认值就报错
3.不指定泛型JSON.parseObject(json) 或者 实体类用 class 则不会报错,
data class Entity(
    val name: String = "", val age: Int = 0
)

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val json = """
            {
                "age":5,
                "name":"1234243"
            }
        """.trimIndent()
        val data = json.parseObject<Entity>()
 //           val data = JSON.parseObject<Entity>(json)
//            val data = JSON.parseObject(json,Entity::class.java)
        Log.w("=========>>", "======>>>data:${data}")
    }
}

implementation("com.alibaba.fastjson2:fastjson2-kotlin:2.0.32")
implementation("com.alibaba.fastjson2:fastjson2-extension:2.0.32")

日志信息

com.alibaba.fastjson2.JSONException: TODO, offset 14, character {, line 2, column 15, fastjson-version 2.0.32
W/System.err: 
W/System.err:             {
W/System.err:                 "age":5,
W/System.err:                 "name":"1234243"
W/System.err:             }
W/System.err:         
W/System.err:     at com.alibaba.fastjson2.reader.ObjectArrayReaderMultiType.readObject(ObjectArrayReaderMultiType.java:73)
W/System.err:     at com.alibaba.fastjson2.JSON.parseObject(JSON.java:826)
W/System.err:     at com.alibaba.fastjson2.JSON.parseObject(JSON.java:849)
W/System.err:     at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:23)
W/System.err:     at android.app.Activity.performCreate(Activity.java:8181)
W/System.err:     at android.app.Activity.performCreate(Activity.java:8147)
W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3755)
W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3949)
W/System.err:     at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:106)
W/System.err:     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
W/System.err:     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2327)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err:     at android.os.Looper.loopOnce(Looper.java:210)
W/System.err:     at android.os.Looper.loop(Looper.java:299)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:8307)

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions