Fixing Json.GetValue()
This commit is contained in:
@@ -146,13 +146,26 @@ namespace Newtonsoft.Json
|
||||
if (lvlObj == null)
|
||||
return defaultValue;
|
||||
|
||||
lvlObj = lvlObj[level];
|
||||
string lvl = level;
|
||||
if (lvlObj.Type == JTokenType.Object)
|
||||
{
|
||||
foreach (var prop in ((JObject)lvlObj).Properties())
|
||||
{
|
||||
if (prop.Name.Equals(lvl, System.StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
lvl = prop.Name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lvlObj = lvlObj[lvl];
|
||||
}
|
||||
|
||||
if (lvlObj == null)
|
||||
return defaultValue;
|
||||
|
||||
return DeepConvert.ChangeType<T>(lvlObj is JValue ? ((JValue)lvlObj).Value : lvlObj.Value<object>());
|
||||
return DeepConvert.ChangeType<T>(lvlObj is JValue lvlValue ? lvlValue.Value : lvlObj.Value<object>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
10
CHANGELOG.md
10
CHANGELOG.md
@@ -5,10 +5,18 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Upcoming](https://git.am-wd.de/AM.WD/common/compare/v1.11.0...main) - 0000-00-00
|
||||
## [Upcoming](https://git.am-wd.de/AM.WD/common/compare/v1.11.1...main) - 0000-00-00
|
||||
|
||||
_no changes yet_
|
||||
|
||||
|
||||
## [v1.11.1](https://git.am-wd.de/AM.WD/common/compare/v1.11.0...v1.11.1) - 2023-05-11
|
||||
|
||||
### Fixed
|
||||
|
||||
- `JsonExtensions.GetValue<T>()` now is case insensitive and detects the correct property name of a `JObject`.
|
||||
|
||||
|
||||
## [v1.11.0](https://git.am-wd.de/AM.WD/common/compare/v1.10.0...v1.11.0) - 2023-03-29
|
||||
|
||||
### Added
|
||||
|
||||
@@ -260,7 +260,7 @@ namespace UnitTests.Common.Extensions
|
||||
// act
|
||||
string topLevelString = jObj.GetValue<string>("stringValue");
|
||||
decimal topLevelDecimal = jObj.GetValue<decimal>("decimalValue");
|
||||
int subLevelInteger = jObj.GetValue<int>("object:integerValue");
|
||||
int subLevelInteger = jObj.GetValue<int>("object:IntegerValue");
|
||||
string subLevelString = jObj.GetValue<string>("object:stringValue");
|
||||
|
||||
string notExistingOnTopLevel = jObj.GetValue<string>("fancyValue");
|
||||
@@ -288,7 +288,7 @@ namespace UnitTests.Common.Extensions
|
||||
// act
|
||||
string topLevelString = jObj.GetValue("stringValue", "Test String");
|
||||
decimal topLevelDecimal = jObj.GetValue("decimalValue", 13.24m);
|
||||
int subLevelInteger = jObj.GetValue("object:integerValue", 55);
|
||||
int subLevelInteger = jObj.GetValue("object:IntegerValue", 55);
|
||||
string subLevelString = jObj.GetValue("object:stringValue", "Yeah!");
|
||||
|
||||
string notExistingOnTopLevel = jObj.GetValue("fancyValue", "Party!");
|
||||
|
||||
Reference in New Issue
Block a user