mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-28 05:42:14 +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()
|
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 {
|
inline fun <T> JsonParser.parseDictionary(callback: JsonParser.() -> T): T {
|
||||||
if (nextToken() == JsonToken.START_OBJECT) {
|
if (nextToken() == JsonToken.START_OBJECT) {
|
||||||
val result = callback()
|
val result = callback()
|
||||||
@ -104,3 +120,9 @@ inline fun JsonGenerator.writeArray(fieldName: String, callback: JsonGenerator.(
|
|||||||
callback()
|
callback()
|
||||||
writeEndArray()
|
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