Parę przykładów, może sie komuś przydadzą
JavaScript i Node
Nie trzeba robić prawie nic, tylko zaimportować plik json
const users = require('../files/4p.json');
Zapytanie
console.log(users
.filter(u => u.ranking !== null)
.reduce((total, e) => total + 1, 0));
MongoDB
Stworzyć bazę, zaimportować sobie np. z konsoli admina json
Zapytanie
db.users.aggregate([
{$match:{points:{$gt:0}}},
{$group:{_id:"", total:{$sum:1}}},
{$project:{_id:0}}
])
Java
Np. Google Gson + klasa User (z Lombok SneakyThrows i Data dla przejrzystości)
/ścieżka do src/main/resources/files przykładowa, do podmiany/
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
class User {
private final Integer id;
private final String name;
private final Date registered;
private final Date online;
private final Integer visits;
private final Integer points;
private final Integer ranking;
private final Integer posts;
private final Integer comments;
private final Integer gave;
private final Integer received;
private final Boolean banned;
private final Map<String, Integer> stats;
private final List<String> sections;
}
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import lombok.SneakyThrows;
import java.io.*;
import java.lang.reflect.Type;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
public class Users4p {
public static final String FILE_NAME = "4p.json";
public static final Path FILES_DIR = Paths.get("src", "main", "resources", "files");
public static final File DATA_FILE = FILES_DIR.resolve(FILE_NAME).toFile();
private Users4p() {
}
@SneakyThrows
public static List<User> getUsers() {
final Gson gson = new Gson();
final Type listUserType = new TypeToken<List<User>>() {
}.getType();
try (BufferedReader br = new BufferedReader(new FileReader(DATA_FILE))) {
final List<User> list = gson.fromJson(br, listUserType);
return Collections.unmodifiableList(list);
}
}
}
<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok-maven-plugin -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.12.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
</dependencies>
Zapytanie
System.out.println(Users4p.getUsers()
.stream()
.filter(user -> user.getPoints() != 0)
.count());
Warto skorzystać z tego "DAO" i już korzystać później z listy obiektów bo parsowanie za każdym razem json przez Gson zajmuje trochę czasu (OK, tylko intelowski i5 :).