JSONP 一款标准的 JSON JavaScript API 跨域数据交换格式类库

发布于 2018-09-10 10:20:00 字数 2766 浏览 1831 评论 0

JSON 是一种轻量级的数据交换格式,可以用于 Web 应用程序、REST 服务和 NoSQL 数据库。随着网络的普及,JSON 和 JSON 库的到来,为 JavaScript 平台开发人员提供了各种便利,同时对于 JSON 的操作和解释需要标准化。

JSON-P 被分成两个 API,流 API(javax.json.stream)和对象模型 API(javax.json)的。流 API 是一个低级别的,有效的方式来解析和生成 JSON。由两个主要的抽象,JsonParser JsonGenerator。JsonParser 是分析器,它允许向前一拉,只读访问一个 JSON 输入源。JsonGenerator 提供方法来写 JSON 流,并允许方法链。

流API

大家来看一段JSON

[
  {
    "type" : "home",
    "number" : "(800) 111-1111"
  },
  {
    "type" : "cell",
    "number" : "(800) 222-2222"
  }
]

我们用 JsonParser 来解析,并输出结果

JsonParserFactory factory = Json.createParserFactory(null);
JsonParser parser = factory.createParser(new StringReader(json));

while (parser.hasNext()) {
  Event event = parser.next();

  switch (event) {
    case KEY_NAME: {
      System.out.print(parser.getString() + "="); break;
    }
    case VALUE_STRING: {
      System.out.println(parser.getString()); break;
    }
  }
}

type=home
number=(800) 111-1111
type=cell
number=(800) 222-2222

JsonGenerator的例子,把结果输出到System.Out

JsonGeneratorFactory factory = Json.createGeneratorFactory(null);
JsonGenerator generator = factory.createGenerator(System.out);

generator.writeStartArray().
  writeStartObject().
    write("type", "home").
    write("number", "(800) 111-1111").writeEnd().
  writeStartObject().
    write("type", "cell").
    write("number", "(800) 222-2222").writeEnd().
  writeEnd().close();

对象模型 API

这是一个简单的,易于使用,高层次的 API,实现顶部的流 API。它创建了一个树形结构,代表中的 JSON 数据存储器,它可以很容易地导航和查询。

JsonObject 中提供了一个地图视图从模型访问名称/值对的无序集合。

JsonArray 提供了一个列表视图访问有序值序列。

要创建这些对象模型,你可以使用的建设者的模式(JsonObjectBuilder JsonArrayBuilder)或使用 JsonReader 从输入源(的InputStream或Reader)读取它们。然后您可以写这些对象模 型(OutputStream 或 Writer)使用 JsonWriter 的输出源。

这里是创建 JsonArray 使用 JsonArrayBuilder 的一个例子

JsonBuilderFactory factory = Json.createBuilderFactory(null);
JsonArray jsonArray = factory.createArrayBuilder()
    .add(factory.createObjectBuilder().
        add("type", "home").
        add("number", "(800) 111-1111"))
    .add(factory.createObjectBuilder().
        add("type", "cell").
        add("number", "(800) 222-2222")).build();

下面的例子是 JsonReader。

try (JsonReader jsonReader = Json.createReader(new StringReader(json))) {
  JsonArray array = jsonReader.readArray();
  System.out.println(array);
}

下面的例子 JsonWriter

try (JsonWriter jsonWriter = Json.createWriter(System.out)) {
  jsonWriter.writeArray(jsonArray);
}

JSON-P 的 beta 版本,可以下载使用,请点击这里 或请访问官方的  Java API的JSON处理  网站。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84935 人气
更多

推荐作者

待"谢繁草

文章 0 评论 0

战皆罪

文章 0 评论 0

子英

文章 0 评论 0

爱的十字路口

文章 0 评论 0

孤者何惧

文章 0 评论 0

xi霄xi

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击“接受”或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。