Невозможно вызвать метод object () в классе JSONStringer в Kotlin - PullRequest
0 голосов
/ 26 мая 2020

Я использую класс org. json .JSONStringer для создания JSON строк для моего Android приложения.

fun createJSONString(stringer:JSONStringer) {
    stringer.object()
    //write some stuff
    stringer.endObject()
}

Однако я не могу вызвать метод object() этого класса для создания нового объекта JSON, поскольку object является свойством kotlin. Таким образом, студия Android сообщает мне, что конструкторы не допускаются для объектов. Что я мог сделать, чтобы заставить Android Studio использовать метод object() JSONStringer?

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Почему бы вместо этого не использовать класс JSONObject, пример для JSONObject и из него:

    val jsonStr = "{\"age\":33,\"messages\":[\"msg 1\",\"msg 2\"],\"name\":\"jim\"}"
    val jObj = JSONObject(jsonStr)
    val str = jObj.toString()

Поскольку JSONStringer - это просто реализация JSONObject#toString и JSONArray#toString, использование этого API также является не рекомендуется, как описано в:

JSONStringer

Реализует JSONObject # toString и JSONArray # toString. Большинство разработчиков приложений должны использовать эти методы напрямую и игнорировать этот API

Вот хороший учебник: Json parser

И в качестве альтернативы вы можете использовать JSON библиотека сериализации / десериализации, например GSON или Jackson

Как преобразовать объект Java в / из JSON (Jackson)

0 голосов
/ 26 мая 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...