有效地使用JSON流(使用Java) [英] Working with JSON streams efficiently (in Java)

查看:86
本文介绍了有效地使用JSON流(使用Java)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在使用 JSONObject JSONReader ,但理想情况下我正在寻找混合动力:)

I've been using both JSONObject and JSONReader, but ideally I'm looking for a hybrid :)

特别是,给定一个JSON对象流,任意长的JSON数组的一部分,是否有一个帮助器/库,一次产生JSONObject,迭代器样式,而不是读取所有内容或必须解析单个原始字段(JsonReader)?

In particular, given a stream of JSON objects, part of arbitrarily long JSON array, is there a helper/library that yields "JSONObject" at a time, iterator style, instead of reading everything in or having to parse out individual primitive fields (JsonReader)?

假设API的示例:

JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));

reader.beginArray();
while (reader.hasNext()) 
{
  JSONObject obj = reader.readObject();
  // do something with 'obj'
}
reader.endArray();

上面,调用readObject解析一些复杂的JSON子树并将其作为JSONObject返回。

Above, calling readObject parses some complex JSON sub-tree and returns it as JSONObject.

推荐答案

javax.json.JSONParser

打印出json的示例:

There's the javax.json.JSONParser
An example that prints out a json:

import javax.json.Json;
import javax.json.stream.JsonParser;
...
JsonParser parser = Json.createParser(new StringReader(jsonData));
while (parser.hasNext()) {
   JsonParser.Event event = parser.next();
   switch(event) {
      case START_ARRAY:
      case END_ARRAY:
      case START_OBJECT:
      case END_OBJECT:
      case VALUE_FALSE:
      case VALUE_NULL:
      case VALUE_TRUE:
         System.out.println(event.toString());
         break;
      case KEY_NAME:
         System.out.print(event.toString() + " " +
                          parser.getString() + " - ");
         break;
      case VALUE_STRING:
      case VALUE_NUMBER:
         System.out.println(event.toString() + " " +
                            parser.getString());
         break;
   }
}

来自 http://docs.oracle.com/javaee/7/tutorial/doc/jsonp004.htm#BABDBHIA

它是JavaEE7 api的一部分,但可以从 https获取一个独立的jar: //jsonp.java.net/download.html

这篇关于有效地使用JSON流(使用Java)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆