У меня есть следующий блок Json, который я возвратил как JsObject
{
"first_block": [
{
"name": "demo",
"description": "first demo description"
}
],
"second_block": [
{
"name": "second_demo",
"description": "second demo description",
"nested_second": [
{
"name": "bob",
"value": null
},
{
"name": "john",
"value": null
}
]
}
]
}
Из этого я хочу вернуть список всех возможных значений, которые я мог бы иметь во втором блоке, вложенноммассив для имени и значения.так с приведенным выше примером List([bob,null],[john,null])
или что-то в этом духе.
Проблема, с которой я столкнулся, заключается в том, что секция значений понимает нулевые значения.Я пытался сопоставить его и вернуть строку "null"
, но не могу найти ее для совпадения со значениями Null.
Что было бы для меня лучшим способом вернуть имя и значения вмассив nested_second
.
Я пытался использовать case-классы и readAsNullable
безуспешно, и моя последняя попытка пошла по следующим направлениям:
val secondBlock = (jsObj \ "second_block").as[List[JsValue]]
secondBlock.foreach(nested_block => {
val nestedBlock = (nested_block \ "nested_second").as[List[JsValue]]
nestedBlock.foreach(value => {
val name = (value \ "name").as[String] //always a string
var convertedValue = ""
val replacement_value = value \ "value"
replacement_value match {
case JsDefined(null) => convertedValue = "null"
case _ => convertedValue = replacement_value.as[String]
}
println(name)
println(convertedValue)
})
}
)
Кажется, convertedValue
возвращается как 'JsDefined (null)' независимо, и я уверен, что то, как я это делаю, ужасно плохо.