无法在 GWT 中将 JSON 字符串解析为 Java/JavaScriptObject
Can't parse JSON string to Java/JavaScriptObject in GWT
我在 JSON 中从服务器接收数据并使用 JsonUtils (GWT) 进行解析。它们看起来像这样:
[{"id":26,"name":"Circle1","description":"Test","type":"CIRCLE","coordinates":[{"latitude":50.364736755649716,"longitude":30.120391845703125}],"radius":6577.427847903551,"userId":1}]
我用这段代码来解析它:
JsArray<Geofence> geofenceJsArray = JsonUtils.safeEval(response.getText());
但是我无法访问坐标列表。当我打电话时
geofenceJsArray.get(0).getCoordinates().size()
我在浏览器的控制台中收到此错误消息:
Uncaught TypeError: $getCoordinates_1_g$(...).size_54_g$ is not a function
我做错了什么?提前致谢!
(来自我对 的回答,您在其中发布了一些来源:)
您不能让 JavaScript 对象的属性为非 JavaScript 类型。 GWT 生成的数组 几乎 看起来像 js 数组,但会丢失重要的类型细节,并且 java.util.List 根本不起作用 - JS 会很乐意假装它会起作用,并且将 return 一个 JS 数组,其中有一个 属性 称为 length
,但没有 方法 称为 size
.
相反,将 getCoordinates
更改为 return JsArray<Coordinate>
。
我在 JSON 中从服务器接收数据并使用 JsonUtils (GWT) 进行解析。它们看起来像这样:
[{"id":26,"name":"Circle1","description":"Test","type":"CIRCLE","coordinates":[{"latitude":50.364736755649716,"longitude":30.120391845703125}],"radius":6577.427847903551,"userId":1}]
我用这段代码来解析它:
JsArray<Geofence> geofenceJsArray = JsonUtils.safeEval(response.getText());
但是我无法访问坐标列表。当我打电话时
geofenceJsArray.get(0).getCoordinates().size()
我在浏览器的控制台中收到此错误消息:
Uncaught TypeError: $getCoordinates_1_g$(...).size_54_g$ is not a function
我做错了什么?提前致谢!
(来自我对
您不能让 JavaScript 对象的属性为非 JavaScript 类型。 GWT 生成的数组 几乎 看起来像 js 数组,但会丢失重要的类型细节,并且 java.util.List 根本不起作用 - JS 会很乐意假装它会起作用,并且将 return 一个 JS 数组,其中有一个 属性 称为 length
,但没有 方法 称为 size
.
相反,将 getCoordinates
更改为 return JsArray<Coordinate>
。