【发布时间】:2019-11-08 08:08:26
【问题描述】:
我有一个data class,叫做Model,
data class Model(var name: String? = null, var address: String? = null) {
override fun toString(): String {
return "name: $name address: $address"
}
}
我有两个 json 字符串,
val json1 = "{ \"name\": \"Alex\", \"address\": \"rome, 1000\" }"
val json2 = "{ \"name\": \"Alex\", \"address\": {\"city\": \"rome\", \"post\": \"1000\" } }"
下面的转换工作正常,
val model1 = Gson().fromJson<Model>(json1, Model::class.java)
但是,这个版本不工作。给出一个例外。
val model2 = Gson().fromJson<Model>(json2, Model::class.java)
例外:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.achellies.kotlin, PID: 11211
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.achellies.kotlin/com.achellies.kotlin.MainActivity}: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 40 path $.address
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3086)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3229)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at
如何解析json2 以便address 字段将保存内部地址json 数据的字符串值?例如解析后address应该等于
{"city": "rome", "post": "1000"}
【问题讨论】:
标签: android json parsing kotlin gson