diff --git a/Ladybird/AppKit/Utilities/Conversions.h b/Ladybird/AppKit/Utilities/Conversions.h index 7aa9f1c0cb..a5e8aa6805 100644 --- a/Ladybird/AppKit/Utilities/Conversions.h +++ b/Ladybird/AppKit/Utilities/Conversions.h @@ -19,6 +19,8 @@ namespace Ladybird { String ns_string_to_string(NSString*); NSString* string_to_ns_string(StringView); +NSDictionary* deserialize_json_to_dictionary(StringView); + Gfx::IntRect ns_rect_to_gfx_rect(NSRect); NSRect gfx_rect_to_ns_rect(Gfx::IntRect); diff --git a/Ladybird/AppKit/Utilities/Conversions.mm b/Ladybird/AppKit/Utilities/Conversions.mm index 78066730fc..3fc4d5dfcb 100644 --- a/Ladybird/AppKit/Utilities/Conversions.mm +++ b/Ladybird/AppKit/Utilities/Conversions.mm @@ -20,6 +20,23 @@ NSString* string_to_ns_string(StringView string) return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; } +NSDictionary* deserialize_json_to_dictionary(StringView json) +{ + auto* ns_json = string_to_ns_string(json); + auto* json_data = [ns_json dataUsingEncoding:NSUTF8StringEncoding]; + + NSError* error = nil; + NSDictionary* dictionary = [NSJSONSerialization JSONObjectWithData:json_data + options:0 + error:&error]; + + if (!dictionary) { + NSLog(@"Error deserializing DOM tree: %@", error); + } + + return dictionary; +} + Gfx::IntRect ns_rect_to_gfx_rect(NSRect rect) { return {