import json def find_json_snippet(raw_snippet): json_parsed_string = None json_start_index = raw_snippet.find('{') json_end_index = raw_snippet.rfind('}') if json_start_index >= 0 and json_end_index >= 0: json_snippet = raw_snippet[json_start_index:json_end_index+1] try: json_parsed_string = json.loads(json_snippet, strict=False) except: raise ValueError('......failed to parse string into JSON format') else: raise ValueError('......No JSON code snippet found in string.') return json_parsed_string def parse_first_json_snippet(snippet): json_parsed_string = None if isinstance(snippet, list): for snippet_piece in snippet: try: json_parsed_string = find_json_snippet(snippet_piece) return json_parsed_string except: pass else: try: json_parsed_string = find_json_snippet(snippet) except Exception as e: print(e) raise ValueError() return json_parsed_string