Java 编译错误:没有可用于com.google.gson.gson类型的源代码

Java 编译错误:没有可用于com.google.gson.gson类型的源代码,java,json,gwt,gson,Java,Json,Gwt,Gson,我试图使用Gson在客户端解析json字符串,但在安装project时出现错误: No source code is available for type com.google.gson.Gson; did you forget to inherit a required module? 我在gwt.xml上添加了。 我正在使用GWT 2.8.1,我们可以在客户端使用Gson吗? [此][1] 使用了GWT的旧版本,我的问题也和Gson模块的错误有关 Gson与GWT不兼容。您应该使用与GW

我试图使用Gson在客户端解析json字符串,但在安装project时出现错误:

 No source code is available for type com.google.gson.Gson; did you forget to inherit a required module?
我在gwt.xml上添加了
。 我正在使用GWT 2.8.1,我们可以在客户端使用Gson吗?
[此][1]


使用了GWT的旧版本,我的问题也和Gson模块的错误有关

Gson与GWT不兼容。您应该使用与GWT兼容的库,如

或者,如果您的模型很简单,您可以使用一种称为JsInterop DTOs的技术。并直接使用浏览器原生的
JSON.parse
函数。该技术基于,并解释了一些限制。例如:

@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核心库):


Gson与GWT不兼容。您应该使用与GWT兼容的库,如

或者,如果您的模型很简单,您可以使用一种称为JsInterop DTOs的技术。并直接使用浏览器原生的
JSON.parse
函数。该技术基于,并解释了一些限制。例如:

@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核心库):


错误的可能重复是非常自我描述的:客户端范围GWT使用库源代码将其编译为JavaScript。此外,GWT只能使用非常有限的一组JDK功能,而Gson是其中的一些高级功能,因此您不能在客户端使用Gson。错误的可能重复是非常自我描述的:客户端范围GWT使用库源代码将其编译为JavaScript。此外,GWT只能使用非常有限的一组JDK功能,而Gson是其中的一些高级功能,因此您不能在客户端使用Gson。如果您不确定针对特定用例的最佳选项,那么这个聊天室是一个非常好的地方。GWT有太多的选项,而且它非常容易被弄糊涂,所以去聊天室讨论你的案例吧!谢谢@Ignacio Baca,JSON.parse()在我的例子中起作用,实际上我不需要使用JsInterop。为了使用对象,我使用了公共静态本机字符串getObject(stringjsvar)/*-{returneval('$wnd.+jsVar);}-*/;这是老办法,;)JsInterop是一种全新的策略,非常干净,经得起未来的考验!如果您不确定针对特定用例的最佳选项是什么,强烈建议您使用此聊天室。GWT有太多的选项,而且它非常容易被弄糊涂,所以去聊天室讨论你的案例吧!谢谢@Ignacio Baca,JSON.parse()在我的例子中起作用,实际上我不需要使用JsInterop。为了使用对象,我使用了公共静态本机字符串getObject(stringjsvar)/*-{returneval('$wnd.+jsVar);}-*/;这是老办法,;)JsInterop是一种全新的策略,非常干净,经得起未来的考验!强烈推荐