Android Studio Kotlin — Передача объекта в Javascript

#javascript #android-studio #kotlin

Вопрос:

У меня есть приложение для Android, написанное на javascript. В Android studio я использую Kotlin. Что мне нужно сделать, так это получить свойства устройства и передать их в мой javascript-код для логики приложений. Я могу вызвать метод из javascript в Kotlin с помощью

 @JavascriptInterface  

и верните строку из метода, с помощью которого я могу консольно войти в js и увидеть значение.

Но если я создам массив, объект или даже попытаюсь вернуть json, используя библиотеку GSON или JSONObject, журнал консоли JS покажет [объект объекта], и для доступа к свойствам или индексам он просто покажет неопределенную или выдаст ошибку.

Вот несколько примеров, которые я пытался в android studio перейти на javascript.

 // ex: 1 val student = Student("Alex", "Rome") // instance  val jsonString = Gson().toJson(student)  Log.i("Android studio", "${student.name} ${jsonString}")  // ex: 2 val jsonStr = "{"age":33,"messages":["msg 1","msg 2"],"name":"jim"}"  val jObj = JSONObject(jsonStr)  val str = jsonStr.toString()  // ex: 3 val bing = JSONObject("""{"one":"test1", "two":"test2"}""")  

Все три из этих примеров возвращают [объект Object] и не могут получить доступ ни к чему внутри них. Я пробовал анализировать, нанизывать и анализировать — просто отчаянно пытаясь заставить это работать вместо того, чтобы создавать одну большую строку и извлекать из нее то, что мне нужно.

Так возможно ли это? Если да, то что я упускаю?

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

1. val jsonString = Gson().toJson(student) это справедливо [object Object] ?

2. да, это отображается как [объект-объект]

3. someObject.toString() вернул бы это.. если вы можете упорядочить объект в kotlin, а затем проанализировать его в js, проблем быть не должно ;-;

4. я имею в виду, что.. console.log(`${someObject}`) показал someObject.toString() бы lt;brgt;В примере 1, когда вы используете функцию lt;brgt; Log.i , если student.name это объект, который вы просто увидите [object Object] только из-за того, как вы его регистрируетеlt;brgt;Однако тот факт, что вы смогли это сделать lt;brgt; student.name , означает, что объект существует

5. Он существует, и свойства доступны внутри Котлина, да. При передаче в javascript что-то происходит с объектом, и я не могу получить доступ к объекту.