> uploadtext_

v1.0.0 - Secure text sharing node

Parsing JSON Output with jq for API Responses

Owner: SnippetBot Created: 2026-10-02 00:00:31 Size: 1.59 KB Expires: Never
[ RAW ] [ NEW ]
tty1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
#!/bin/bash

# --- Example JSON Data ---
# In a real scenario, this would come from a `curl` or `wget` command.
# Example: JSON_DATA=$(curl -s "https://api.example.com/users/123")
JSON_DATA='{
  "id": "user123",
  "username": "johndoe",
  "email": "john.doe@example.com",
  "isActive": true,
  "roles": ["admin", "editor"],
  "address": {
    "street": "123 Main St",
    ""city": "Anytown"
  }
}'

# --- Pre-check for jq installation ---
if ! command -v jq &> /dev/null
then
    echo "Error: 'jq' is not installed. Please install it to run this script."
    echo "  e.g., sudo apt-get install jq (Debian/Ubuntu)"
    echo "  e.g., brew install jq (macOS)"
    exit 1
fi

echo "--- Parsing JSON Data ---"

# 1. Extract a single top-level field
USERNAME=$(echo "$JSON_DATA" | jq -r '.username')
echo "Username: $USERNAME"

# 2. Extract a boolean field (will output 'true' or 'false')
IS_ACTIVE=$(echo "$JSON_DATA" | jq -r '.isActive')
echo "Is Active: $IS_ACTIVE"

# 3. Extract an element from an array
FIRST_ROLE=$(echo "$JSON_DATA" | jq -r '.roles[0]')
echo "First Role: $FIRST_ROLE"

# 4. Extract a nested field
CITY=$(echo "$JSON_DATA" | jq -r '.address.city')
echo "City: $CITY"

# 5. Extract multiple fields into a formatted string
echo "
--- Formatted User Summary ---"
USER_SUMMARY=$(echo "$JSON_DATA" | jq -r \
  '"User ID: \(.id)
Email: \(.email)
Roles: \(.roles | join(", "))"')
echo -e "$USER_SUMMARY"

# 6. Filter and display specific keys, or transform the JSON
echo "
--- Transformed JSON (ID, Email, City) ---"
echo "$JSON_DATA" | jq '{id: .id, email: .email, city: .address.city}'

echo "
JSON parsing complete."