in src/iceberg/json_internal.cc [778:792]
Result<BlobMetadata> BlobMetadataFromJson(const nlohmann::json& json) {
BlobMetadata blob_metadata;
ICEBERG_ASSIGN_OR_RAISE(blob_metadata.type, GetJsonValue<std::string>(json, kType));
ICEBERG_ASSIGN_OR_RAISE(blob_metadata.source_snapshot_id,
GetJsonValue<int64_t>(json, kSnapshotId));
ICEBERG_ASSIGN_OR_RAISE(blob_metadata.source_snapshot_sequence_number,
GetJsonValue<int64_t>(json, kSequenceNumber));
ICEBERG_ASSIGN_OR_RAISE(blob_metadata.fields,
GetJsonValue<std::vector<int32_t>>(json, kFields));
ICEBERG_ASSIGN_OR_RAISE(
blob_metadata.properties,
(GetJsonValueOrDefault<std::unordered_map<std::string, std::string>>(json,
kProperties)));
return blob_metadata;
}