JSONP 一款标准的 JSON JavaScript API 跨域数据交换格式类库
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论