java - 判断ByteArrayOutputStream的类型是JSONArray还是JSONObject?

标签 java json inputstream bytearrayoutputstream

ByteArrayOutputStream result = new ByteArrayOutputStream();
while ((length = inputStream.read(buffer)) != -1) {
        result.write(buffer, 0, length);
}

有没有办法确定结果是否包含 JSONObject 还是 JSONArray?我一直盲目地将它转换为 JSONObject,但是,我遇到了它是 JSONArray 的情况 - 任何帮助将不胜感激。

JSON API:使用更快的 jackson 和 org.json

提前致谢

最佳答案

JSR 353 引用实现

参见https://jsonp.java.net/

这些是 Maven 依赖项:

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.0</version>
</dependency>

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.0.4</version>
    <scope>runtime</scope>
</dependency>

代码示例:

// the JSON classes have package javax.json

ByteArrayOutputStream baos = new ByteArrayOutputStream();

// read JSON into baos

ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
InputStreamReader isr = new InputStreamReader(bais, Charset.forName("UTF-8"));
JsonReader jr = Json.createReader(isr);

JsonStructure js = jr.read();

switch (js.getValueType()) {
    case ARRAY:
        break;
    case OBJECT:
        break;
    case STRING:
        break;
    case NUMBER:
        break;
    case TRUE:
        break;
    case FALSE:
        break;
    case NULL:
        break;
}

FasterXML jackson

(只是一个有效的示例,很可能不是“最好的”)

Maven 依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>

代码示例:

// see JsonNodeType
new ObjectMapper().reader().readTree("[]").getNodeType();

关于java - 判断ByteArrayOutputStream的类型是JSONArray还是JSONObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43969853/

相关文章:

java - 下载具有特定内容类型的文件

java - HttpServletRequest.getParameterValues() 中的值排序

javascript - 如何使用 jQuery.grep() 过滤多维 JSON 对象

java - 从字符串缓冲阅读器中读取所有行

java - 在内存中创建一个 Zip 文件

java - 使用 REST 请求表中记录数的最佳方法

java - H2 数据库 URL 错误

javascript - Spotify json 响应包含换行符?

json - Jersey 调用以对象作为参数的 get 不起作用

java - 如何使 InputStream 跳过以 '#' 开头的行?