pub struct JsonOptimizer;
Expand description
JSON optimization utilities for reducing payload sizes and improving performance.
This struct provides methods for optimizing JSON payloads by removing unnecessary fields, compressing data, and minimizing payload sizes while maintaining functionality.
Implementations§
Source§impl JsonOptimizer
impl JsonOptimizer
Sourcepub fn optimize_request_payload(json: &Value) -> Value
pub fn optimize_request_payload(json: &Value) -> Value
Optimize JSON payload by removing unnecessary fields and minimizing size.
This method recursively processes JSON objects and arrays to remove null values, empty arrays, and optimize the structure for smaller payload sizes while maintaining data integrity.
§Arguments
json
- The JSON value to optimize
§Returns
Returns an optimized JSON value with reduced size.
§Examples
use ultrafast_gateway::json_optimization::JsonOptimizer;
use serde_json::json;
let original = json!({
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hello"}],
"unnecessary_field": null,
"empty_array": []
});
let optimized = JsonOptimizer::optimize_request_payload(&original);
// Result: {"model": "gpt-4", "messages": [{"role": "user", "content": "Hello"}]}
Sourcepub fn create_minimal_response(data: &Value) -> Value
pub fn create_minimal_response(data: &Value) -> Value
Create a minimal JSON response with only essential fields.
This method creates a standardized minimal response structure that contains only the essential data field, reducing response size and improving parsing performance.
§Arguments
data
- The data to include in the response
§Returns
Returns a minimal JSON response structure.
§Examples
use ultrafast_gateway::json_optimization::JsonOptimizer;
use serde_json::json;
let data = json!({"result": "success"});
let response = JsonOptimizer::create_minimal_response(&data);
// Result: {"data": {"result": "success"}}
Sourcepub fn optimize_chat_request(request: &Value) -> Value
pub fn optimize_chat_request(request: &Value) -> Value
Optimize chat completion request by removing unnecessary fields.
This method specifically optimizes chat completion requests by keeping only the essential fields required for the API call, removing any unnecessary or null fields to reduce payload size.
§Arguments
request
- The chat completion request to optimize
§Returns
Returns an optimized chat completion request with only essential fields.
§Examples
use ultrafast_gateway::json_optimization::JsonOptimizer;
use serde_json::json;
let request = json!({
"model": "gpt-4",
"messages": [{"role": "user", "content": "Hello"}],
"temperature": 0.7,
"max_tokens": 100,
"unnecessary_field": null,
"extra_config": {}
});
let optimized = JsonOptimizer::optimize_chat_request(&request);
// Keeps only: model, messages, temperature, max_tokens, etc.
Sourcepub fn optimize_embedding_request(request: &Value) -> Value
pub fn optimize_embedding_request(request: &Value) -> Value
Optimize embedding request by removing unnecessary fields.
This method specifically optimizes embedding requests by keeping only the essential fields required for the embedding API call, removing any unnecessary or null fields to reduce payload size.
§Arguments
request
- The embedding request to optimize
§Returns
Returns an optimized embedding request with only essential fields.
§Examples
use ultrafast_gateway::json_optimization::JsonOptimizer;
use serde_json::json;
let request = json!({
"model": "text-embedding-ada-002",
"input": "Hello world",
"encoding_format": "float",
"dimensions": 1536,
"unnecessary_field": null
});
let optimized = JsonOptimizer::optimize_embedding_request(&request);
// Keeps only: model, input, encoding_format, dimensions
Sourcepub fn compress_json(json: &Value) -> Value
pub fn compress_json(json: &Value) -> Value
Compress JSON by using shorter field names where possible
Sourcepub fn decompress_json(json: &Value) -> Value
pub fn decompress_json(json: &Value) -> Value
Decompress JSON by restoring original field names
Sourcepub fn calculate_payload_size(json: &Value) -> usize
pub fn calculate_payload_size(json: &Value) -> usize
Calculate JSON payload size in bytes
Sourcepub fn get_size_reduction(original: &Value, optimized: &Value) -> f64
pub fn get_size_reduction(original: &Value, optimized: &Value) -> f64
Get payload size reduction percentage