Как я могу удалить имя основного(корневого узла) JSONObject

#android #json #kotlin #retrofit #okhttp

Вопрос:

Не знаю, как я могу это объяснить, я искал 9 часов и, наконец, мне нужна помощь.

{"session_permit":{ "sessionID":"sessionID", "participantID":0, "timestamp":0, "signature":"somethinglongstring" }}

это то, что я сделал, и мне не нужен «session_permit».

Что мне нужно, так это :

{ "sessionID":"sessionID", "participantID":0, "timestamp":0, "signature":"somethinglongstring" }

Я закончил удалять данные «namevaluepairs» в JSONObject, но не смог удалить основное имя на нем. Я должен отправить тип данных : JSONObject на сервер, и когда я делаю это с помощью JSONObject, всегда добавляется «SessionID».

Я поместил это для отправки запроса на сервер.

 interface TalkJoinCredentialsApiInterface
{
    @POST("Prod/channel/join/Test")
    @Headers("Content-type: application/json",
        "Accept: */*")
    fun joinCredentialData(
        @Body requestData : TalkJoinCredentialsRequestData
    ) : Call<TalkJoinCredentialsResponseData>
}
 
 class TalkJoinCredentialsRequestData(
   var session_permit : JsonObject
)
 
 var jsonObject = JsonObject()
jsonObject.addProperty("sessionID", session_permit.sessionID)
jsonObject.addProperty("participantID", session_permit.participantID)
jsonObject.addProperty("timestamp", session_permit.timestamp)
jsonObject.addProperty("signature", session_permit.signature)

var requestData = TalkJoinCredentialsRequestData(jsonObject)
 

Комментарии:

1. Ваш вопрос неясен. Вы получаете объект с session_permit помощью и пытаетесь получить доступ к внутреннему JSON, или вы пытаетесь отправить этот объект? Если вы пытаетесь отправить его в описанном вами формате, вам, вероятно, следует определить TalkJoinCredentialsRequestData class TalkJoinCredentialsRequestData(val sessionID: String, val participantID: Int, val timestamp: Int, val signature: String) его как сериализованный так, как вы ожидаете.

2. хотите использовать JSONObject без session_permit . Я пытаюсь отправить его на сервер. будет ли лучше отправлять по разделенному аргументу?

3. черт возьми, да, мой вопрос был супер идотом, и вы помогли мне, это был правильный путь, спасибо вам большое!!!!!!!!!!!!!! @MrMikimn

4. Подумайте о том, чтобы проголосовать за мой комментарий, если вы почувствовали, что это вам помогло 🙂

5. как я могу проголосовать за комментарий?! хочу дать тебе 10000 голосов!!! Я почти новый аккаунт, так что найду, как проголосовать, комментарий жди меня!

Ответ №1:

вероятно, вам следует определить TalkJoinCredentialsRequestData как

 class TalkJoinCredentialsRequestData(val sessionID: String, val participantID: Int, val timestamp: Int, val signature: String)
 

таким образом, он сериализуется так, как вы ожидаете.

Ответ №2:

Ты можешь сделать вот так :

 var newJson = json.session_permit
 

Комментарии:

1. не знаю, для чего это. Это для нового JSONObject???