json-data-extraction · git:20260424.d50cf5a · 2026-04-24 · sha256 3cf75bdfb7bacb76
json-data-extraction git:20260424.d50cf5aA
Immutable. This exact content never changes and is served at /api/v1/blob/3cf75bdfb7bacb76.
---
name: json-data-extraction
description: Extract, parse, and query JSON data from large enterprise files efficiently
---
# JSON Data Extraction from Enterprise Data
## Overview
This skill covers parsing and extracting information from large JSON files containing enterprise data like employee records, Slack messages, and product metadata.
## Use Cases
- Extracting specific fields from employee databases
- Searching through Slack message histories for mentions or keywords
- Finding relationships between employees and documents/reports
- Aggregating data across multiple JSON sources
## Installation & Setup
```bash
# Python has built-in json module, no installation needed
python3 -c "import json; print('JSON module available')"
```
## Code Examples
### Basic JSON Loading
```python
import json
with open('/root/DATA/metadata/employee.json', 'r') as f:
employee_data = json.load(f)
# Access specific employee
employee = employee_data.get('eid_1e9356f5', {})
```
### Extracting Data with Filters
```python
import json
with open('/root/DATA/products/ContentForce.json', 'r') as f:
product_data = json.load(f)
# Extract Slack messages mentioning specific employee
messages = product_data.get('slack', [])
for msg in messages:
if 'Market Research Report' in msg.get('Message', {}).get('text', ''):
print(msg)
```
### Extracting IDs from Text
```python
import re
def extract_employee_ids(text):
"""Extract employee IDs (format: eid_xxxxxxxx) from text"""
pattern = r'eid_[a-f0-9]{8}'
return re.findall(pattern, text)
# Usage
text = "@eid_1e9356f5 created this channel. @eid_06cddbb3 joined."
ids = extract_employee_ids(text) # Returns ['eid_1e9356f5', 'eid_06cddbb3']
```
### Finding Report Authors and Reviewers
```python
import json
import re
def find_report_authors_and_reviewers(product_json_path, report_name):
"""Find employees who authored/reviewed a report"""
with open(product_json_path, 'r') as f:
data = json.load(f)
authors = set()
reviewers = set()
messages = data.get('slack', [])
for msg in messages:
text = msg.get('Message', {}).get('text', '')
if report_name.lower() in text.lower():
# Author: person sharing the report
author_id = msg.get('Message', {}).get('User', {}).get('userId')
if author_id and author_id.startswith('eid_'):
authors.add(author_id)
# Reviewers: people responding in thread
for reply in msg.get('ThreadReplies', []):
reviewer_id = reply.get('User', {}).get('userId')
if reviewer_id and reviewer_id.startswith('eid_'):
reviewers.add(reviewer_id)
return list(authors), list(reviewers)
```
## Best Practices
1. **Memory Efficiency**: For large files, process in chunks rather than loading entire file
2. **Error Handling**: Always check if keys exist before accessing nested values
3. **ID Pattern Matching**: Employee IDs follow format `eid_` followed by 8 hex characters
4. **Text Search**: Use case-insensitive matching for report/document names
5. **Deduplication**: Use sets to avoid duplicate IDs before converting to lists
## Common Patterns
### Pattern 1: Search for Document Mentions
Look for link syntax in Slack: `<https://...|Report Name>`
### Pattern 2: Extract User IDs from Messages
- Author: `Message.User.userId`
- Reviewers: `Message.ThreadReplies[].User.userId`
- Mentions: Look for `@eid_` patterns in message text
### Pattern 3: Cross-Reference Data
Load employee.json to map IDs to names if needed for verification
## Token Tracking
When using this with APIs, track token consumption:
```python
# After API calls
tokens_used = response.usage.input_tokens + response.usage.output_tokens
```