JSON

许多 AJAX 应用程序开发人员都采用 JSON 作为服务器通信的首选数据格式。它是一种基于 JavaScript 对象字面量表示法的相对简单的格式。如果您选择在应用程序中使用 JSON 编码数据,您可以使用 GWT 类解析和操作 JSON 对象,以及非常有用且优雅的 JavaScript 覆盖类型 概念。

JSON 格式基于 JavaScript 语言的语法和数据类型。它支持字符串、数字、布尔值和空值。您还可以将多个值组合到数组和对象中。JSON 对象只是名称/值对的无序集合,其中名称始终是字符串,而值是任何其他有效的 JSON 类型(甚至是另一个对象)。以下是如何使用 JSON 编码产品数据的示例

{
  "product": {
    "name": "Widget",
    "company": "ACME, Inc",
    "partNumber": "7402-129",
    "prices": [
      { "minQty": 1, "price": 12.49 },
      { "minQty": 10, "price": 9.99 },
      { "minQty": 50, "price": 7.99 }
    ]
  }
}

有关更多 JSON 示例,请参阅 json.org/example.html

  1. 解析 JSON
  2. 使用 JSON 和 JSNI 的 Mashups

解析 JSON

您可以使用 JsonUtils 解析 JSON 字符串并将其转换为 JavaScriptObject

/*
 * Takes in a JSON String and evals it.
 * @param JSON String that you trust
 * @return JavaScriptObject that you can cast to an Overlay Type
 */
public static <T extends JavaScriptObject> T parseJson(String jsonStr)
{
  return JsonUtils.safeEval(jsonStr);
}

通常,您会将 JSON 数据作为 HTTP 请求 的响应文本接收。因此,您首先必须将该 String 转换为可以使用类似于上面所示的方法进行操作的对象。与 JavaScriptObjects 交互的推荐方法是使用 JavaScript 覆盖类型

使用 JSON 和 JSNI 的 Mashups

如果您从自己的服务器加载 JSON 编码数据,通常会使用 RequestBuilder 和相关类来 发出 HTTP 请求。但是,您也可以使用 GWT 的 JavaScript Native Interface (JSNI) 功能以真正的 Mashup 方式从远程服务器检索 JSON。在入门教程中更详细地解释了跨站点 JSON 的技术。要查看一个工作示例,请查看 入门指南 中的 跨站点客户端-服务器通信部分