复杂 JSON 处理

Java 中的数据导入

Anthony Markham

VP Quant Developer

复杂 JSON 数据

  • 嵌套的对象与数组
  • 混合数据类型
  • 处理 API 与配置文件 🧠

$$

复杂的 json 数据

Java 中的数据导入

嵌套的 JSON 对象

  • 嵌套:对象内含对象
  • Tablesaw 可自动展开简单情况
  • 扁平化:将每行包含列表或数组的列转换为多行
{
  "customer": {
    "name": "John Doe",
    "address": {
      "street": "123 Main St",                            <- 嵌套信息
      "city": "Boston",                                   <- 嵌套信息
      "coordinates": {"lat": 42.3601, "lng": -71.0589}    <- 多层嵌套信息
    }
  }
}
Java 中的数据导入

JSON 扁平化

customer.name customer.address.street customer.address.city
John Doe 123 Main St Boston

$ $

customer.address.coordinates.lat customer.address.coordinates.lng
42.3601 -71.0589
Java 中的数据导入

JsonReader 配置

  • JsonReadOptions 可用于:
    • 指定数据源(文件、URL 或字符串)
    • 配置表名
    • 处理缺失值
JsonReadOptions options = JsonReadOptions

.builder("complex.json")
.tableName("Products")
.missingValueIndicator("N/A")
.build();
Table data = new JsonReader().read(options);
missingValues = data.stringColumn("name").isMissing();
Java 中的数据导入

连接表

  • 使用 joinOn 连接表
  • 内连接只保留两表都存在的行
Table phones = Table.read().csv("phones.csv");   // name, phone

Table diets = Table.read().csv("diets.csv"); // name, diet
// 对两张表执行内连接 Table joined = phones.joinOn("name").inner(diets);

$$

$$

  • 还有许多其他连接类型
Java 中的数据导入

Passons à la pratique !

Java 中的数据导入

Preparing Video For Download...