我有一个 http 响应,其主体是 ByteReadChannel。我知道内容是 JSON 对象数组。我需要通过 JSON 对象的属性来过滤该响应主体。由于数组...
我有一个 http 响应,其主体是 ByteReadChannel
。我知道内容是一个 JSON
对象数组。我需要根据对象的属性过滤该响应主体 JSON
。由于该数组可能包含至少数千个对象,因此我希望避免将整个内容读入内存,应用我的过滤器并将结果发送到客户端。
我怎样才能将其转换 ByteReadChannel
为,比如说, Flow<MyJsonObject>
流上的过滤器? Flow
这只是一个例子,也许有更好的类可以使用......
附言:我用 Ktor
.
感谢@Leviathan 提供的解决方案。我正在修改对我有用的@leviathan 解决方案
setContent {
// mainViewModel = MainViewModel()
// mainViewModel = ViewModelProvider(this).get(MainViewModel::class.java)
// val count = mainViewModel.count.collectAsStateWithLifecycle()
val state = remember {
MainViewModel()
}
val uiState by state.count.collectAsStateWithLifecycle()
Log.d("DiceRollerMainActivity", "State Flow Count Value ${uiState}")
val imageresource = when (uiState) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Log.d("DiceRollerMainActivity", "Image Resource Value ${imageresource}")
Column(
modifier = Modifier
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Image(
painter = painterResource(id = imageresource),
contentDescription = ""
)
Button(onClick = {
state.rollDice()
}) {
Text(text = "Let's Roll")
}
}
}