summaryrefslogtreecommitdiff
path: root/src/SMAPI.Toolkit/Serialization/InternalExtensions.cs
blob: 782970351b59f9d3af239da50d44cfa5d91ebe5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using Newtonsoft.Json.Linq;

namespace StardewModdingAPI.Toolkit.Serialization
{
    /// <summary>Provides extension methods for parsing JSON.</summary>
    public static class JsonExtensions
    {
        /// <summary>Get a JSON field value from a case-insensitive field name. This will check for an exact match first, then search without case sensitivity.</summary>
        /// <typeparam name="T">The value type.</typeparam>
        /// <param name="obj">The JSON object to search.</param>
        /// <param name="fieldName">The field name.</param>
        public static T? ValueIgnoreCase<T>(this JObject obj, string fieldName)
        {
            JToken? token = obj.GetValue(fieldName, StringComparison.OrdinalIgnoreCase);
            return token != null
                ? token.Value<T>()
                : default;
        }
    }
}