mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-24 11:52:13 +00:00
Add: Utils to (de)serialize lists
This commit is contained in:
parent
7f33d6efc7
commit
8a445f78e4
@ -81,6 +81,22 @@ fun JsonParser.collectDistinctNotEmptyStrings(): List<String> {
|
||||
return collectNotNullStrings().asSequence().filter { it.isNotEmpty() }.distinct().toList()
|
||||
}
|
||||
|
||||
fun <T> JsonParser.collectList(arrayName: String, callback: JsonParser.() -> T?): MutableList<T> {
|
||||
val list = mutableListOf<T>()
|
||||
forEachKey {
|
||||
when {
|
||||
it.array(arrayName) ->
|
||||
list.addAll(
|
||||
collectNotNull(JsonToken.START_OBJECT) {
|
||||
callback()
|
||||
}
|
||||
)
|
||||
else -> skipChildren()
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
inline fun <T> JsonParser.parseDictionary(callback: JsonParser.() -> T): T {
|
||||
if (nextToken() == JsonToken.START_OBJECT) {
|
||||
val result = callback()
|
||||
@ -104,3 +120,9 @@ inline fun JsonGenerator.writeArray(fieldName: String, callback: JsonGenerator.(
|
||||
callback()
|
||||
writeEndArray()
|
||||
}
|
||||
|
||||
inline fun <T> JsonGenerator.writeList(listName: String, list: List<T>, callback: T.() -> Unit) {
|
||||
writeArray(listName) {
|
||||
list.forEach { writeDictionary { it.callback() } }
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user