using System.Collections.Generic; using System.Linq; using LitJson; namespace Wizard.AutoTest; public static class LitJsonExtention { public static bool? ToBooleanOrNull(this JsonData jsonData, string key) { if (!jsonData.HasKey(key)) { return null; } if (!jsonData[key].IsBoolean) { return null; } return jsonData[key].ToBoolean(); } public static bool ToBooleanOrDefault(this JsonData jsonData, string key, bool defaultBoolean) { bool? flag = jsonData.ToBooleanOrNull(key); if (!flag.HasValue) { return defaultBoolean; } return flag.Value; } public static int? ToIntOrNull(this JsonData jsonData, string key) { if (!jsonData.HasKey(key)) { return null; } if (!jsonData[key].IsInt) { return null; } return jsonData[key].ToInt(); } public static int ToIntOrDefault(this JsonData jsonData, string key, int defaultInt) { int? num = jsonData.ToIntOrNull(key); if (!num.HasValue) { return defaultInt; } return num.Value; } public static long? ToLongOrNull(this JsonData jsonData, string key) { if (!jsonData.HasKey(key)) { return null; } if (!jsonData[key].IsLong && !jsonData[key].IsInt) { return null; } return jsonData[key].ToLong(); } public static long ToLongOrDefault(this JsonData jsonData, string key, int defaultLong) { long? num = jsonData.ToLongOrNull(key); if (!num.HasValue) { return defaultLong; } return num.Value; } public static string ToStringOrNull(this JsonData jsonData, string key) { if (!jsonData.HasKey(key)) { return null; } if (!jsonData[key].IsString) { return null; } return jsonData[key].ToString(); } public static string ToStringOrDefault(this JsonData jsonData, string key, string defaultString) { return jsonData.ToStringOrNull(key) ?? defaultString; } public static JsonData ToObjectOrNull(this JsonData jsonData, string key) { if (!jsonData.HasKey(key)) { return null; } if (!jsonData[key].IsObject) { return null; } return jsonData[key]; } public static IEnumerable ToJsonDataCollection(this JsonData jsonData, string key) { if (jsonData.HasKey(key) && jsonData[key].IsArray) { JsonData arrayJsonData = jsonData[key]; for (int i = 0; i < arrayJsonData.Count; i++) { yield return arrayJsonData[i]; } } } public static bool HasKey(this JsonData jsonData, string key) { return jsonData.Keys.Any((string k) => k == key); } }