如何在 Kotlin 的可变映射中替换特定 KEY 的值
How to replace a VALUE of Particular KEY inside Mutable Map in Kotlin
我收到了 api 的回复,我想在其中替换特定 KEY 的 VALUE。怎么做
MutableMap<String!, String!>
{sendbird_call={"user_id":"91990000000","push_sound":"default","is_voip":true,"push_alert":"","client_id":"xxxxx-xxx-xxxx-xxxx-xxxxxxx","command":{"sequence_number":2,"payload":{"sdp":"sdpppppp","call_id":"xxxx-xxx-xxx-xxxx-xxxxxx","peer_connection_id":null},"delivery_info":{"type":"push"},"message_id":"xxxx-xxxx-xxx-xx-xxxx","cmd":"SGNL","type":"offer","call_type":"direct_call","version":1},"receiver_type":"client"},
message=}
根据上面的回复,我需要将 peer_connection_id 的值从 null 更改为 ” “
var msgData = JSONObject(receivedMap["sendbird_call"])
if (msgData.has("command")) {
val dataCommand: JSONObject = msgData.getJSONObject("command")
if (dataCommand.has("payload")) {
val dataPay: JSONObject = dataCommand.getJSONObject("payload")
if (dataPay.has("peer_connection_id")) {
if(dataPay.getString("peer_connection_id").equals(null)){
dataPay.put("peer_connection_id","")
}
}
}
}
任何建议或帮助
有 IR42 的回答
private fun replacePeerID(receivedMap: Map<String, String>): Map<String, String> {
var msgData = JSONObject(receivedMap["sendbird_call"])
msgData.optJSONObject("command")
?.optJSONObject("payload")
?.let {
if (it.has("peer_connection_id") && it.opt("peer_connection_id") == null) {
it.put("peer_connection_id", "")
}
}
return receivedMap
}
private fun replacePeerID(receivedMap: Map<String, String>): Map<String, String> {
val msgData = JSONObject(receivedMap["sendbird_call"] ?: "{}")
return msgData.optJSONObject("command")
?.optJSONObject("payload")
.let { payloadObject ->
if (payloadObject != null &&
payloadObject.has("peer_connection_id") &&
payloadObject.opt("peer_connection_id") == JSONObject.NULL
) {
payloadObject.put("peer_connection_id", "")
receivedMap + ("sendbird_call" to msgData.toString())
} else {
receivedMap
}
}
}
我收到了 api 的回复,我想在其中替换特定 KEY 的 VALUE。怎么做
MutableMap<String!, String!>
{sendbird_call={"user_id":"91990000000","push_sound":"default","is_voip":true,"push_alert":"","client_id":"xxxxx-xxx-xxxx-xxxx-xxxxxxx","command":{"sequence_number":2,"payload":{"sdp":"sdpppppp","call_id":"xxxx-xxx-xxx-xxxx-xxxxxx","peer_connection_id":null},"delivery_info":{"type":"push"},"message_id":"xxxx-xxxx-xxx-xx-xxxx","cmd":"SGNL","type":"offer","call_type":"direct_call","version":1},"receiver_type":"client"}, message=}
根据上面的回复,我需要将 peer_connection_id 的值从 null 更改为 ” “
var msgData = JSONObject(receivedMap["sendbird_call"])
if (msgData.has("command")) {
val dataCommand: JSONObject = msgData.getJSONObject("command")
if (dataCommand.has("payload")) {
val dataPay: JSONObject = dataCommand.getJSONObject("payload")
if (dataPay.has("peer_connection_id")) {
if(dataPay.getString("peer_connection_id").equals(null)){
dataPay.put("peer_connection_id","")
}
}
}
}
任何建议或帮助
有 IR42 的回答
private fun replacePeerID(receivedMap: Map<String, String>): Map<String, String> {
var msgData = JSONObject(receivedMap["sendbird_call"])
msgData.optJSONObject("command")
?.optJSONObject("payload")
?.let {
if (it.has("peer_connection_id") && it.opt("peer_connection_id") == null) {
it.put("peer_connection_id", "")
}
}
return receivedMap
}
private fun replacePeerID(receivedMap: Map<String, String>): Map<String, String> {
val msgData = JSONObject(receivedMap["sendbird_call"] ?: "{}")
return msgData.optJSONObject("command")
?.optJSONObject("payload")
.let { payloadObject ->
if (payloadObject != null &&
payloadObject.has("peer_connection_id") &&
payloadObject.opt("peer_connection_id") == JSONObject.NULL
) {
payloadObject.put("peer_connection_id", "")
receivedMap + ("sendbird_call" to msgData.toString())
} else {
receivedMap
}
}
}