1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 04:37:44 +00:00

AK: Make JSON parser return ErrorOr<JsonValue> (instead of Optional)

Also add slightly richer parse errors now that we can include a string
literal with returned errors.

This will allow us to use TRY() when working with JSON data.
This commit is contained in:
Andreas Kling 2021-11-15 01:46:51 +01:00
parent 304c03f457
commit 587f9af960
54 changed files with 172 additions and 228 deletions

View file

@ -169,7 +169,7 @@ ErrorOr<DHCPv4Client::Interfaces> DHCPv4Client::get_discoverable_interfaces()
auto file_contents = file->read_all();
auto json = JsonValue::from_string(file_contents);
if (!json.has_value() || !json.value().is_array()) {
if (json.is_error() || !json.value().is_array()) {
dbgln("Error: No network adapters available");
return Error::from_string_literal("No network adapters available"sv);
}

View file

@ -121,12 +121,11 @@ Vector<IPv4Address> MulticastDNS::local_addresses() const
}
auto file_contents = file->read_all();
auto json = JsonValue::from_string(file_contents);
VERIFY(json.has_value());
auto json = JsonValue::from_string(file_contents).release_value_but_fixme_should_propagate_errors();
Vector<IPv4Address> addresses;
json.value().as_array().for_each([&addresses](auto& value) {
json.as_array().for_each([&addresses](auto& value) {
auto if_object = value.as_object();
auto address = if_object.get("ipv4_address").to_string();
auto ipv4_address = IPv4Address::from_string(address);