你可以直接复制上面的代码进你的工程使用,也可以添加依赖库的形式
1、在根目录的build.gradle
里插入
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2、在app的build.gradle
里插入
dependencies {
implementation 'com.github.D10NGYANG:JsonEntityManager:1.4'
}
测试实体类
data class TestInfo (
// 使用nameInJson标注在JSON中对应的字段
@DLField(nameInJson = "int1", radixInJson = 16)
var intT: Int = 0,
@DLField
var stringT: String = "",
// 这是一个普通Array,用于读取JSON中的JSONArray
@DLField
var listT: List<String> = emptyList(),
// 这是另一个继承了BaseJsonEntity()的变量
@DLField
var test2: Test2Info = Test2Info(),
// 这是继承了BaseJsonEntity()的变量列表
@DLField
var testList: List<Test2Info> = emptyList()
) : BaseJsonEntity()
另一个
data class Test2Info (
@DLField
var para1: String = "0",
@DLField
var para2: Int = 2,
@DLField
var para3: Boolean = false,
@DLField(radixInJson = 16)
var para4: List<Int> = listOf()
) : BaseJsonEntity()
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// {"int1":81,"listT":["1a","2b","3c"],"stringT":"abcd","test2":{"para1":"efgh","para2":1234,"para3":true,"para4":["1a","2b","3c"]},"testList":[{"para1":"L0","para2":0,"para3":false,"para4":["2a","3b","4c"]},{"para1":"L1","para2":1,"para3":true,"para4":["3a","4b","5c"]}]}
val str = "{\"int1\":81,\"listT\":[\"1a\",\"2b\",\"3c\"],\"stringT\":\"abcd\",\"test2\":{\"para1\":\"efgh\",\"para2\":1234,\"para3\":true,\"para4\":[\"1a\",\"2b\",\"3c\"]},\"testList\":[{\"para1\":\"L0\",\"para2\":0,\"para3\":false,\"para4\":[\"2a\",\"3b\",\"4c\"]},{\"para1\":\"L1\",\"para2\":1,\"para3\":true,\"para4\":[\"3a\",\"4b\",\"5c\"]}]}"
val json = JSONObject(str)
val test = TestInfo()
test.setFromJson(json)
Log.e("测试", "data=$test")
Log.e("测试", "json=${test.toJson()}")
}
}
-keep class com.dlong.jsonentitylib.** {*;}
-dontwarn com.dlong.jsonentitylib.**
-keep class * extends com.dlong.jsonentitylib.BaseJsonEntity {*;}
-keepclassmembers class * {
@com.dlong.jsonentitylib.annotation.DLField <fields>;
}