{"record":{"id":"cda7f64d5707fa19","repo":"quickwit-oss/quickwit","slug":"could-not-serialize-jsonvalue","errorCode":null,"errorMessage":"could not serialize JsonValue","messagePattern":"could not serialize JsonValue","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-serve/src/search_api/rest_handler.rs","lineNumber":262,"sourceCode":"    index_id_patterns: Vec<String>,\n    search_request: SearchRequestQueryString,\n) -> Result<quickwit_proto::search::SearchRequest, SearchError> {\n    // The query ast below may still contain user input query. The actual\n    // parsing of the user query will happen in the root service, and might require\n    // the user of the docmapper default fields (which we do not have at this point).\n    let query_ast = query_ast_from_user_text(&search_request.query, search_request.search_fields);\n    let query_ast_json = serde_json::to_string(&query_ast)?;\n    let search_request = quickwit_proto::search::SearchRequest {\n        index_id_patterns,\n        query_ast: query_ast_json,\n        snippet_fields: search_request.snippet_fields.unwrap_or_default(),\n        start_timestamp: search_request.start_timestamp,\n        end_timestamp: search_request.end_timestamp,\n        max_hits: search_request.max_hits,\n        start_offset: search_request.start_offset,\n        aggregation_request: search_request\n            .aggs\n            .map(|agg| serde_json::to_string(&agg).expect(\"could not serialize JsonValue\")),\n        sort_fields: search_request.sort_by.sort_fields,\n        scroll_ttl_secs: None,\n        search_after: None,\n        count_hits: search_request.count_all.into(),\n        ignore_missing_indexes: false,\n        skip_aggregation_finalization: false,\n        ..Default::default()\n    };\n    Ok(search_request)\n}\n\nasync fn search_endpoint(\n    index_id_patterns: Vec<String>,\n    search_request: SearchRequestQueryString,\n    search_service: &dyn SearchService,\n) -> Result<SearchResponseRest, SearchError> {\n    let allow_failed_splits = search_request.allow_failed_splits;\n    let search_request = search_request_from_api_request(index_id_patterns, search_request)?;","sourceCodeStart":244,"sourceCodeEnd":280,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-serve/src/search_api/rest_handler.rs#L244-L280","documentation":"While building a SearchRequest from the REST search endpoint, `serde_json::to_string` failed to serialize the parsed query AST (a JsonValue-based structure) into the request's query_ast JSON string. Serialization of a JSON value failing here indicates a non-string map key or similar structurally invalid JSON produced upstream, and the error propagates as a SearchError via `?`.","triggerScenarios":"Thrown at quickwit/quickwit-serve/src/search_api/rest_handler.rs:262 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Simplify or correct the query/search_fields so the query AST is plain JSON with string keys","Check for unusual characters or malformed query syntax in the search request","Report the failing request shape to Quickwit maintainers if it looks valid"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}