Java如何使用StreamingAPI来处理大型JSON,请给出代码示例
时间: 2023-04-01 16:02:32 浏览: 93
可以使用Jackson库来处理大型JSON,以下是使用StreamingAPI来处理JSON的示例代码:
```java
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import java.io.IOException;
import java.io.InputStream;
public class JsonStreamingExample {
public static void main(String[] args) throws IOException {
InputStream inputStream = JsonStreamingExample.class.getResourceAsStream("/large.json");
JsonFactory jsonFactory = new JsonFactory();
JsonParser jsonParser = jsonFactory.createParser(inputStream);
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
String fieldName = jsonParser.getCurrentName();
if ("data".equals(fieldName)) {
jsonParser.nextToken();
while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
String dataFieldName = jsonParser.getCurrentName();
if ("id".equals(dataFieldName)) {
jsonParser.nextToken();
System.out.println("id: " + jsonParser.getValueAsString());
} else if ("name".equals(dataFieldName)) {
jsonParser.nextToken();
System.out.println("name: " + jsonParser.getValueAsString());
} else {
jsonParser.skipChildren();
}
}
} else {
jsonParser.skipChildren();
}
}
jsonParser.close();
}
}
```
以上代码假设JSON文件的格式如下:
```json
{
"data": [
{
"id": "1",
"name": "John"
},
{
"id": "2",
"name": "Jane"
}
]
}
```
代码中使用了JsonParser来遍历JSON,JsonToken来判断当前解析到的JSON元素类型,skipChildren方法来跳过不需要处理的元素。
阅读全文