Ошибка компиляции: нет исходного кода для типа com.google.gson.Gson
Я пытаюсь проанализировать строку json на стороне клиента с помощью Gson, но при установке проекта получаю сообщение об ошибке:
No source code is available for type com.google.gson.Gson; did you forget to inherit a required module?
я добавил <inherits name='com.google.gson.Gson' />
на моем gwt.xml. Я использую GWT 2.8.1 мы можем использовать Gson на стороне клиента?
[Это][1]
При использовании библиотеки Gson в коде клиента GWT использовалась более старая версия GWT, и мой вопрос также связан с ошибкой модуля Gson.
1 ответ
Gson не совместим с GWT. Вы должны использовать GWT-совместимую библиотеку, такую как gwt-jackson.
В качестве альтернативы, если ваши модели просты, вы можете использовать технику под названием JsInterop DTO. И использовать браузер родной JSON.parse
функционировать напрямую. Этот метод основан на JsInterop и некоторые ограничения объясняются здесь. Пример:
@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
class SearchResult {
public String display_name; //ex: "Málaga, Provincia de Málaga, Andalusia, Spain"
public String lat, lon; //ex: lat: "36.7210805", lon: "-4.4210409"
public double importance; //ex: 0.73359836669253
}
А затем вызвать собственный анализ (необходимо импортировать библиотеку elemental2-core):
Object json = elemental2.core.JSONType.parse(jsonMessageString);
SearchResult result = jsinterop.base.Js.cast(json);