MCPcopy Create free account
hub / github.com/AI45Lab/Code / extract_all_json_values

Function extract_all_json_values

core/src/llm/structured.rs:1037–1058  ·  view source on GitHub ↗

Every JSON object/array value mineable from possibly-dirty text, in document order (direct parse, code fences, then all balanced `{...}` / `[...]`). Deduped.

(text: &str)

Source from the content-addressed store, hash-verified

1035/// Every JSON object/array value mineable from possibly-dirty text, in document order
1036/// (direct parse, code fences, then all balanced `{...}` / `[...]`). Deduped.
1037fn extract_all_json_values(text: &str) -> Vec<Value> {
1038 let trimmed = text.trim();
1039 let mut values: Vec<Value> = Vec::new();
1040 let consider = |candidate: &str, values: &mut Vec<Value>| {
1041 if let Ok(v) = serde_json::from_str::<Value>(candidate.trim()) {
1042 if (v.is_object() || v.is_array()) && !values.contains(&v) {
1043 values.push(v);
1044 }
1045 }
1046 };
1047 consider(trimmed, &mut values);
1048 if let Some(inner) = strip_code_fence(trimmed) {
1049 consider(inner, &mut values);
1050 }
1051 for candidate in find_all_balanced(trimmed, '{', '}') {
1052 consider(&candidate, &mut values);
1053 }
1054 for candidate in find_all_balanced(trimmed, '[', ']') {
1055 consider(&candidate, &mut values);
1056 }
1057 values
1058}
1059
1060/// Try every raw candidate × every JSON value it yields against the schema; return the
1061/// first schema-valid object, else the best parseable-but-invalid object (for repair).

Calls 3

strip_code_fenceFunction · 0.85
find_all_balancedFunction · 0.85
containsMethod · 0.80