我一直在使用JSONObject和JSONReader,但理想情况下,我正在寻找一种混合动力:)
特别是,给定JSON对象流(任意长的JSON数组的一部分),是否有一个帮助程序/库,它一次生成迭代器样式的“ JSONObject”,而无需读取其中的所有内容或不必解析单个原始字段(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返回。
有javax.json.JSONParser。
javax.json.JSONParser
输出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; } }
从Java EE的教程19.4.1读JSON数据使用一个解析器。它是JavaEE 7 API的一部分,但是可以从https://jsonp.java.net/download.html获得独立的jar 。