亲测:版本1.2.38
data class User(val name: String, val age: Int)
//data class User(@JSONField(name="name")val name: String,@JSONField(name="age") val age: Int)
val list = mutableListOf
for (i in 1..10) {
list.add(User("ycx$i", i * 10))
}
val json = JSON.toJSONString(list)
Log.e("==========json======", json)
val pList: MutableList
try {
pList = JSON.parseArray(json, User::class.javaObjectType)
Log.e("==========", pList.toString())
} catch (e: Exception) {
e.printStackTrace()
}
data class 用第一行那样写会报如题的错误
第二种写法不会报错
亲测Android studio 2.3.3 ext.kotlin_version = '1.1.4-3'
亲测Android studio 3.0 beta4 ext.kotlin_version = '1.1.4-3'
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.annotation.JSONField
import kotlin.collections.*
fun main(args: Array<String>) {
val dt = DataClass(1,2)
val json = JSON.toJSONString(dt)
println(json)
val clz = DataClass::class
println(clz.javaObjectType)
val dt1 = JSON.parseObject(json,clz.javaObjectType)
println(dt1)
val dtf = DataClassField(1,2)
val jsonf = JSON.toJSONString(dtf)
println(jsonf)
val clzf = DataClassField::class
println(clzf.javaObjectType)
val dt3 = JSON.parseObject(jsonf,clzf.javaObjectType)
println(dt3)
val dts = DataClassSimple(1,2)
val jsons = JSON.toJSONString(dts)
println(jsons)
val clzs = DataClassSimple::class
println(clzs.javaObjectType)
val dt2 = JSON.parseObject(jsons,clzs.javaObjectType)
println(dt2)
val list = mutableListOf<DataClassSimple>(dts)
var jsonM = JSON.toJSONString(list)
println(jsonM)
val dtM = JSON.parseArray(jsonM,clzs.javaObjectType)
println(dtM)
//println(JSON.toJSON(dt))
//TestClz.test(DataClass(1,2))
//val gson = GsonBuilder().create()
//gson.toJson(dt, System.out)
}
data class DataClassSimple(val a : Int, val b : Int)
data class DataClass(@JSONField(name="aa")val a : Int, @JSONField(name="bb")val b : Int)
data class DataClassField(@field:JSONField(name="aaa")val a : Int, @field:JSONField(name="bbb")val b : Int)
主干的代码是没有问题的,版本:1.2.38-preiview-09
您这是用IntelliJ IDEA运行的?我用IntelliJ IDEA测试也是正常的,只是Android Studio测试就不行
好,我明天试试AS
已测试,1.1.63.android也存在同样的问题
可不可以提供一个运行的demo看看怎么能稳定在kotlin解析,现在我各种尝试都没法运行
同问
Android Studio Canary 3.0 Beta4
kotlin version 1.1.4-3
com.alibaba:fastjson:1.2.38与com.alibaba:fastjson:1.1.63.android都是报这个错。
很抱歉,之前都是在Intellj中做的验证的,这个周末跟进哈
在Android Studio编译的类也重现不了。。。
那就很尴尬了
@ZYRzyr 你尝试跑一下这个testcase试试呢。 看跟你的有没有差异呢
@neil4dong
我这儿不行。
我的AS里面也出现这个问题,后来发现是Class.forName("kotlin.reflect.jvm.internal.KClassImpl") 这里出错了。
然后加上compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" 就可以了
Most helpful comment
我的AS里面也出现这个问题,后来发现是Class.forName("kotlin.reflect.jvm.internal.KClassImpl") 这里出错了。
然后加上compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" 就可以了