MCPcopy Create free account
hub / github.com/apache/impala / ParseJsonObjectFromResponse

Function ParseJsonObjectFromResponse

be/src/service/query-profile-ai-analysis.cc:545–561  ·  view source on GitHub ↗

Parses a model JSON response and tolerates non-JSON prefixes/suffixes.

Source from the content-addressed store, hash-verified

543
544// Parses a model JSON response and tolerates non-JSON prefixes/suffixes.
545static bool ParseJsonObjectFromResponse(string_view response, Document* response_doc) {
546 DCHECK(response_doc != nullptr);
547 if (response_doc == nullptr) return false;
548 response_doc->Parse(response.data(), response.size());
549 if (!response_doc->HasParseError() && response_doc->IsObject()) return true;
550
551 const size_t first_brace = response.find('{');
552 const size_t last_brace = response.rfind('}');
553 if (first_brace == string_view::npos || last_brace == string_view::npos
554 || last_brace <= first_brace) {
555 return false;
556 }
557 const string_view candidate =
558 response.substr(first_brace, last_brace - first_brace + 1);
559 response_doc->Parse(candidate.data(), candidate.size());
560 return !response_doc->HasParseError() && response_doc->IsObject();
561}
562
563// Returns the assistant message object from common response envelope shapes.
564static const Value* FindAssistantMessageInResponse(const Document& response_doc) {

Callers 2

TESTFunction · 0.85

Calls 6

rfindMethod · 0.80
substrMethod · 0.80
ParseMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
findMethod · 0.45

Tested by 1

TESTFunction · 0.68