From 33b006f157acfeb12800d4a373b3c0b709888242 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Wed, 13 Sep 2023 11:57:54 -0400 Subject: [PATCH] Ladybird: Add a helper to deserialize a JSON string to an NSDictionary The steps here are a tad verbose, and will be needed several times in the Inspector window. --- Ladybird/AppKit/Utilities/Conversions.h | 2 ++ Ladybird/AppKit/Utilities/Conversions.mm | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) 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 {