JSONP 一款标准的 JSON JavaScript API 跨域数据交换格式类库 - 文章教程

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

发布于 2018-09-10 字数 3177 浏览 1623 评论 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处理  网站。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

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

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

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

2583 文章
29 评论
84935 人气
更多

推荐作者

Jay

文章 0 评论 0

guowei007

文章 0 评论 0

2668157715

文章 0 评论 0

HY阳

文章 0 评论 0

想挽留

文章 30 评论 3