Я успешно получаю объект JSON в качестве запроса и передаю его моему анализатору. Код работает до тех пор, пока я не позвоню с Json, а затем застревает. Что я делаю не так?
Вот соответствующий класс:
class User(@SerializedName("mac") private val phoneMac: String) : Comparable<User> {
@SerializedName("values")
private val measurements: MutableSet<Measurement> = mutableSetOf()
fun getPhoneMac(): String = phoneMac
fun getMeasurements(): Set<Measurement> = measurements
//etc.
}
, который относится к этому классу:
class Measurement (@SerializedName("mac") val deviceMac: String, val timestamp: String, val value: Double, val valueType: ValueType) : Comparable<Measurement>{
fun getDeviceMac(): String = deviceMac
fun getTimestamp(): String = timestamp
fun getValue(): Double = value
fun getValueType(): ValueType = valueType
//etc.
}
А вот как я пытаюсь разобрать его :
fun fromJson(json: String): User {
val builder = GsonBuilder()
builder.setPrettyPrinting()
return builder.create().fromJson(json, User::class.java)
}
Расширена функция from Json, чтобы убедиться, что она застряла: create () все еще работает, из Json () не
Также Я знаю, что файл JSON правильный и не содержит пропущенных значений или нулей.
Для проверки:
{
"mac": "00-80-41-ae-fd-b1",
"values":
[
{
"mac": "ab-cd-ef-98-76-13",
"timestamp": "2012-04-23T18:25:43",
"value": 68,
"valuetype": "HR"
},
{
"mac": "ab-cd-ef-98-76-13",
"timestamp": "2012-04-23T18:35:43",
"value": 65,
"valuetype": "HR"
}
]
}
Редактировать : для уточнения как к тому, что я имею в виду, когда мой код застревает. В целях отладки я изменил свою функцию с Json на следующую:
fun fromJson(json: String): User {
val builder = GsonBuilder()
builder.setPrettyPrinting()
println("json received")
val gson = builder.create()
println("GSON created")
val user = gson.fromJson(json, User::class.java)
println("user created")
return user
}
Моя консоль читает
json получен GSON создан
Значение "пользователь создан" не печатается, поэтому gson.from Json -call никогда не возвращает