use*_*887 6 java json jackson gson
这就是我现在正在做的事情:
FileReader fileReader = new FileReader(fileName);
BufferedReader reader = new BufferedReader(fileReader);
String data = "";
while((data = reader.readLine()) != null){
ObjectMapper mapper = new ObjectMapper();
Map<String,String> map = mapper.readValue(data, Map.class);
}
Run Code Online (Sandbox Code Playgroud)
目前我正在使用 Jackson,理想情况下我想一次从文件中读取一个 Json 对象,解析它,然后继续下一个。我需要从这些 Json 对象中计算出唯一数量的 id 并执行更多操作。最好一一阅读。
杰克逊会是最好的前进方式吗? 这是解析巨大 Json 的一个很好的例子,但它只处理每个文件一个对象。我的文件有巨大的 Jsons(其中 1000 个)。
这是一个对我有用的杰克逊示例。我在一个 json 文件中有数千个 json 对象(令牌)。此代码将遍历文件读取每个令牌并打印它的序列号。
所需的进口:
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;
Run Code Online (Sandbox Code Playgroud)
使用 Jackson 从以下位置读取多个 json 对象FileInputStream:
try (FileInputStream fis = new FileInputStream("D:/temp/tokens.json")) {
JsonFactory jf = new JsonFactory();
JsonParser jp = jf.createParser(fis);
jp.setCodec(new ObjectMapper());
jp.nextToken();
while (jp.hasCurrentToken()) {
Token token = jp.readValueAs(Token.class);
jp.nextToken();
System.out.println("Token serial "+token.getSerialNumber());
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个更适合您的查询的 JAVA 8ish 解决方案,对于任何需要花费大量时间进行解析的地方,我总是倾向于使用 BufferedReader 而不是 InputStreams。
ObjectMapper mapper = new ObjectMapper();
JsonFactory jsonFactory = new JsonFactory();
try(BufferedReader br = new BufferedReader(new FileReader("luser.txt"))) {
Iterator<luser> value = mapper.readValues( jsonFactory.createParser(br), luser.class);
value.forEachRemaining((u)->{System.out.println(u);});
}
Run Code Online (Sandbox Code Playgroud)
在每次迭代中,每个对象的反序列化作为 next() 的一部分发生。
| 归档时间: |
|
| 查看次数: |
10810 次 |
| 最近记录: |