From 38320307116fa7b0f1c9ddbf7734e536c1292498 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 16 Mar 2026 12:38:19 -0400 Subject: [PATCH] Convert `Oj.load` -> `JSON.parse` in most places (#38236) --- app/controllers/api/v1/donation_campaigns_controller.rb | 4 ++-- app/helpers/json_ld_helper.rb | 2 +- .../admin/metrics/dimension/software_versions_dimension.rb | 2 +- app/lib/link_details_extractor.rb | 4 ++-- app/lib/translation_service/deepl.rb | 4 ++-- app/lib/translation_service/libre_translate.rb | 4 ++-- app/lib/video_metadata_extractor.rb | 2 +- app/lib/webfinger.rb | 2 +- app/lib/webhooks/payload_renderer.rb | 2 +- app/services/activitypub/process_collection_service.rb | 2 +- app/services/software_update_check_service.rb | 2 +- app/validators/reaction_validator.rb | 2 +- 12 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/controllers/api/v1/donation_campaigns_controller.rb b/app/controllers/api/v1/donation_campaigns_controller.rb index e1368e72f10..4b3d680e9aa 100644 --- a/app/controllers/api/v1/donation_campaigns_controller.rb +++ b/app/controllers/api/v1/donation_campaigns_controller.rb @@ -35,7 +35,7 @@ class Api::V1::DonationCampaignsController < Api::BaseController return if key.blank? campaign = Rails.cache.read("donation_campaign:#{key}", raw: true) - Oj.load(campaign) if campaign.present? + JSON.parse(campaign) if campaign.present? end def save_to_cache!(campaign) @@ -57,7 +57,7 @@ class Api::V1::DonationCampaignsController < Api::BaseController url.query_values = { platform: 'web', seed: seed, locale: locale, environment: Rails.configuration.x.donation_campaigns.environment }.compact Request.new(:get, url.to_s).perform do |res| - return Oj.load(res.body_with_limit, mode: :strict) if res.code == 200 + return JSON.parse(res.body_with_limit) if res.code == 200 end end rescue *Mastodon::HTTP_CONNECTION_ERRORS, Oj::ParseError diff --git a/app/helpers/json_ld_helper.rb b/app/helpers/json_ld_helper.rb index 3ab00819d82..8ff77e3c57a 100644 --- a/app/helpers/json_ld_helper.rb +++ b/app/helpers/json_ld_helper.rb @@ -309,7 +309,7 @@ module JsonLdHelper end def body_to_json(body, compare_id: nil) - json = body.is_a?(String) ? Oj.load(body, mode: :strict) : body + json = body.is_a?(String) ? JSON.parse(body) : body return if compare_id.present? && json['id'] != compare_id diff --git a/app/lib/admin/metrics/dimension/software_versions_dimension.rb b/app/lib/admin/metrics/dimension/software_versions_dimension.rb index 032abb75250..6c4de0e3ec0 100644 --- a/app/lib/admin/metrics/dimension/software_versions_dimension.rb +++ b/app/lib/admin/metrics/dimension/software_versions_dimension.rb @@ -80,7 +80,7 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim def ffmpeg_version version_output = Terrapin::CommandLine.new(Rails.configuration.x.ffprobe_binary, '-show_program_version -v 0 -of json').run - version = Oj.load(version_output, mode: :strict, symbol_keys: true).dig(:program_version, :version) + version = JSON.parse(version_output, symbolize_names: true).dig(:program_version, :version) { key: 'ffmpeg', diff --git a/app/lib/link_details_extractor.rb b/app/lib/link_details_extractor.rb index a8004f2925f..5dba1350ef0 100644 --- a/app/lib/link_details_extractor.rb +++ b/app/lib/link_details_extractor.rb @@ -101,7 +101,7 @@ class LinkDetailsExtractor end def json - @json ||= root_array(Oj.load(@data)).compact.find { |obj| SUPPORTED_TYPES.include?(obj['@type']) } || {} + @json ||= root_array(JSON.parse(@data)).compact.find { |obj| SUPPORTED_TYPES.include?(obj['@type']) } || {} end end @@ -265,7 +265,7 @@ class LinkDetailsExtractor next unless structured_data.valid? structured_data - rescue Oj::ParseError, EncodingError + rescue JSON::ParserError, EncodingError Rails.logger.debug { "Invalid JSON-LD in #{@original_url}" } next end.first diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb index 7761dbe626d..59c255a7ce7 100644 --- a/app/lib/translation_service/deepl.rb +++ b/app/lib/translation_service/deepl.rb @@ -31,7 +31,7 @@ class TranslationService::DeepL < TranslationService def fetch_languages(type) request(:get, "/v2/languages?type=#{type}") do |res| - Oj.load(res.body_with_limit).map { |language| normalize_language(language['language']) } + JSON.parse(res.body_with_limit).map { |language| normalize_language(language['language']) } end end @@ -68,7 +68,7 @@ class TranslationService::DeepL < TranslationService end def transform_response(json) - data = Oj.load(json, mode: :strict) + data = JSON.parse(json) raise UnexpectedResponseError unless data.is_a?(Hash) data['translations'].map do |translation| diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb index a63cc723f19..b97f3342332 100644 --- a/app/lib/translation_service/libre_translate.rb +++ b/app/lib/translation_service/libre_translate.rb @@ -17,7 +17,7 @@ class TranslationService::LibreTranslate < TranslationService def languages request(:get, '/languages') do |res| - languages = Oj.load(res.body_with_limit).to_h do |language| + languages = JSON.parse(res.body_with_limit).to_h do |language| [language['code'], language['targets'].without(language['code'])] end languages[nil] = languages.values.flatten.uniq.sort @@ -45,7 +45,7 @@ class TranslationService::LibreTranslate < TranslationService end def transform_response(json, source_language) - data = Oj.load(json, mode: :strict) + data = JSON.parse(json) raise UnexpectedResponseError unless data.is_a?(Hash) data['translatedText'].map.with_index do |text, index| diff --git a/app/lib/video_metadata_extractor.rb b/app/lib/video_metadata_extractor.rb index 33a6264b4f5..adef0edb861 100644 --- a/app/lib/video_metadata_extractor.rb +++ b/app/lib/video_metadata_extractor.rb @@ -6,7 +6,7 @@ class VideoMetadataExtractor def initialize(path) @path = path - @metadata = Oj.load(ffmpeg_command_output, mode: :strict, symbol_keys: true) + @metadata = JSON.parse(ffmpeg_command_output, symbolize_names: true) parse_metadata rescue Terrapin::ExitStatusError, Oj::ParseError diff --git a/app/lib/webfinger.rb b/app/lib/webfinger.rb index c39c25e994a..e887de17c75 100644 --- a/app/lib/webfinger.rb +++ b/app/lib/webfinger.rb @@ -12,7 +12,7 @@ class Webfinger def initialize(uri, body) @uri = uri - @json = Oj.load(body, mode: :strict) + @json = JSON.parse(body) validate_response! end diff --git a/app/lib/webhooks/payload_renderer.rb b/app/lib/webhooks/payload_renderer.rb index 73ae30b5725..a7972244960 100644 --- a/app/lib/webhooks/payload_renderer.rb +++ b/app/lib/webhooks/payload_renderer.rb @@ -58,7 +58,7 @@ class Webhooks::PayloadRenderer /iox def initialize(json) - @document = DocumentTraverser.new(Oj.load(json)) + @document = DocumentTraverser.new(JSON.parse(json)) end def render(template) diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb index cadc7d2d10e..d9ba5d5822c 100644 --- a/app/services/activitypub/process_collection_service.rb +++ b/app/services/activitypub/process_collection_service.rb @@ -6,7 +6,7 @@ class ActivityPub::ProcessCollectionService < BaseService def call(body, actor, **options) @account = actor - @json = original_json = Oj.load(body, mode: :strict) + @json = original_json = JSON.parse(body) @options = options return unless @json.is_a?(Hash) diff --git a/app/services/software_update_check_service.rb b/app/services/software_update_check_service.rb index 45ec1f50db5..e3bc1129642 100644 --- a/app/services/software_update_check_service.rb +++ b/app/services/software_update_check_service.rb @@ -20,7 +20,7 @@ class SoftwareUpdateCheckService < BaseService def fetch_update_notices Request.new(:get, "#{api_url}?version=#{version}").add_headers('Accept' => 'application/json', 'User-Agent' => 'Mastodon update checker').perform do |res| - return Oj.load(res.body_with_limit, mode: :strict) if res.code == 200 + return JSON.parse(res.body_with_limit) if res.code == 200 end rescue *Mastodon::HTTP_CONNECTION_ERRORS, Oj::ParseError nil diff --git a/app/validators/reaction_validator.rb b/app/validators/reaction_validator.rb index 89d83de5a2c..51e6a01f3c2 100644 --- a/app/validators/reaction_validator.rb +++ b/app/validators/reaction_validator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class ReactionValidator < ActiveModel::Validator - SUPPORTED_EMOJIS = Oj.load_file(Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json').to_s).keys.freeze + SUPPORTED_EMOJIS = JSON.load_file(Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json').to_s).keys.freeze LIMIT = 8